<?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>74164</bug_id>
          
          <creation_ts>2011-12-08 21:47:33 -0800</creation_ts>
          <short_desc>Add the FileSystem functions of iOS</short_desc>
          <delta_ts>2011-12-09 21:34:15 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>518107</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 21:47:33 -0800</bug_when>
    <thetext>Add the FileSystem of iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518109</commentid>
    <comment_count>1</comment_count>
      <attachid>118529</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 21:54:25 -0800</bug_when>
    <thetext>Created attachment 118529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518477</commentid>
    <comment_count>2</comment_count>
      <attachid>118529</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-09 13:52:39 -0800</bug_when>
    <thetext>Comment on attachment 118529
Patch

Were the added files published in iOS code drops before? In that case, they may need to retain existing copyright dates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518493</commentid>
    <comment_count>3</comment_count>
      <attachid>118529</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 14:12:06 -0800</bug_when>
    <thetext>Comment on attachment 118529
Patch

(In reply to comment #2)
&gt; (From update of attachment 118529 [details])
&gt; Were the added files published in iOS code drops before? In that case, they may need to retain existing copyright dates.

I think one of them was. I will check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518509</commentid>
    <comment_count>4</comment_count>
      <attachid>118529</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 14:21:49 -0800</bug_when>
    <thetext>Comment on attachment 118529
Patch

&gt; I think one of them was. I will check

Nope, actually that is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518655</commentid>
    <comment_count>5</comment_count>
      <attachid>118529</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-09 17:07:04 -0800</bug_when>
    <thetext>Comment on attachment 118529
Patch

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

r- to address a strategy for Source/WebKit code sharing and platform structure.

It may be easier to land the WebCore pieces first.

&gt; Source/WebKit/mac/Misc/WebNSFileManagerExtras.h:39
&gt;  @interface NSFileManager (WebNSFileManagerExtras)
&gt; +#if !PLATFORM(IOS)
&gt;  - (void)_webkit_setMetadataURL:(NSString *)URLString referrer:(NSString *)referrer atPath:(NSString *)path;
&gt;  - (NSString *)_webkit_startupVolumeName;
&gt; +#endif // !PLATFORM(IOS)
&gt; +
&gt; +#if PLATFORM(IOS)
&gt; +- (NSString *)_webkit_createTemporaryDirectoryWithTemplatePrefix:(NSString *)prefix;
&gt; +#endif // PLATFORM(IOS)

We need to come up with a better strategy for sharing this code rather than mixing Mac-only, iOS-only and shared methods into a single header and implementation file.

Also, adding PLATFORM(IOS) macros won&apos;t work for any public headers unless we start post-processing the headers to strip out these macros, and it could impact any Apple projects using private headers as SPI (since these macros won&apos;t be defined when they build their projects).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518669</commentid>
    <comment_count>6</comment_count>
      <attachid>118670</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 17:26:42 -0800</bug_when>
    <thetext>Created attachment 118670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518671</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 17:27:58 -0800</bug_when>
    <thetext>&gt; We need to come up with a better strategy for sharing this code rather than mixing Mac-only, iOS-only and shared methods into a single header and implementation file.

Good point. 

I believed we could do that afterwards but we can&apos;t since that would pollute the public headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518748</commentid>
    <comment_count>8</comment_count>
      <attachid>118670</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-09 20:46:07 -0800</bug_when>
    <thetext>Comment on attachment 118670
Patch

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

r=me

&gt; Source/WebCore/platform/ios/FileSystemIOS.mm:31
&gt; +#if PLATFORM(IOS)

Is this needed with the EXCLUDED_SOURCE_FILE_NAMES variable in Source/WebCore/Configurations/WebCore.xcconfig?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518749</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 20:49:02 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/ios/FileSystemIOS.mm:31
&gt; &gt; +#if PLATFORM(IOS)
&gt; 
&gt; Is this needed with the EXCLUDED_SOURCE_FILE_NAMES variable in Source/WebCore/Configurations/WebCore.xcconfig?

Nope, that shouldn&apos;t be necessary. I&apos;ll update that before landing.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518752</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-09 21:34:15 -0800</bug_when>
    <thetext>Committed r102517: &lt;http://trac.webkit.org/changeset/102517&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118529</attachid>
            <date>2011-12-08 21:54:25 -0800</date>
            <delta_ts>2011-12-09 17:26:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74164-20111208215424.patch</filename>
            <type>text/plain</type>
            <size>15208</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZjOWY3ODUyNjYwMGZk
ZDMxN2JjMzMwMjBmNjZlNzhjY2Q2NDg2Mi4uYjVkMDRjYWFmYWFmM2QwYTk3MzM2YzBlMmIzMGZj
NmI0YjJhNjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTEyLTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgRmls
ZVN5c3RlbSBmdW5jdGlvbnMgb2YgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDE2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCBvbiBpT1MgZm9yIHRlbXBv
cmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGV4
cG9ydHMgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgaXQgaXMgZXhwb3NlZAorICAgICAg
ICB0aHJvdWdoIFdlYktpdC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvRmlsZVN5c3RlbUlPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRmlsZVN5
c3RlbUlPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZSk6CisKIDIwMTEt
MTItMDggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBFbmFibGUgdmlld3BvcnQgbWV0YXRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFiOTU2
ZTdhZDQyMTIyN2QyNWZmNmJmOTk3ODkzMzdkYTBkNTRlMmQuLjE4MGI3ZGRkNTUwN2JlZmQ4OTMz
NGU4NDY4YWEwMTQzYjcwODU5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMS0xMi0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgdGhlIEZpbGVTeXN0ZW0gZnVuY3Rpb25zIG9mIGlPUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxNjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgX3dlYmtpdF9jcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXggdG8gTlNGaWxlTWFuYWdlciBmb3IgaU9TLgor
CisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg6CisgICAgICAgICogTWlz
Yy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAoLVtOU0ZpbGVNYW5hZ2VyIF93
ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4Ol0pOgorCiAy
MDExLTEyLTA3ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRo
ZSAzMi1iaXQgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDBhNzAzOWQ4ZGY2ODQ0OGEx
MzhhZmEyM2VlZjllMTA2YmU5ODE3MDkuLjJkN2UwMmE2NjQ0ODkwYjg3NmEwZmU0YjA4MWM5OTQ1
MjcwMzU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTYwLDYgKzE1NjAsMTAgQEAgX3dr
R2V0TlNFdmVudE1vbWVudHVtUGhhc2UKIF93a0dldE1hY09TWFZlcnNpb25TdHJpbmcKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oSU9TKQorX19aTjdXZWJDb3JlMjRjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnlFUDhOU1N0cmluZworI2VuZGlmCisKIF93a1VucmVnaXN0ZXJVbmlxdWVJZEZvckVsZW1l
bnQKIF93a0FjY2Vzc2liaWxpdHlIYW5kbGVGb2N1c0NoYW5nZWQKIF93a0dldEFYVGV4dE1hcmtl
clR5cGVJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDlmYjMyN2M4MjBiNGJkZmQ3ODBmODkwNTIwNzY0Y2QzMzVkMmE3MTIuLjY5
YmEyYmYxMzA0NWUyZmU1NjgzZTVmNGI1NjcwZmY2ZmZhZGEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3OCw2ICs2Nzgs
OCBAQAogCQkyNjU1NDEzOTE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRDb2Rlc0lPUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY1NTQxMzcxNDg5
ODExQzAwMERGQzVEIC8qIEtleUV2ZW50Q29kZXNJT1MuaCAqLzsgfTsKIAkJMjY1NTQxM0ExNDg5
ODExQzAwMERGQzVEIC8qIEtleUV2ZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjY1NTQxMzgxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50
SU9TLm1tICovOyB9OwogCQkyNjU1NDE1MjE0ODlCMjMzMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NTU0MTRC
MTQ4OUFBMkIwMDBERkM1RCAvKiBDdXJzb3JJT1MuY3BwICovOyB9OworCQkyNkMxN0EzRTE0OTFE
MkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0
ZW1JT1MuaCAqLzsgfTsKKwkJMjZDMTdBM0YxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMx
N0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSAqLzsgfTsKIAkJMjZFOThB
MTAxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhF
QjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi87IH07CiAJCTI2RjQwRDRBMTQ5MDRB
NjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29w
SU9TLm1tICovOyB9OwogCQkyOTE3QjU2MTE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNj
aGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOTE3QjU1RTE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgKi87
IH07CkBAIC03Nzg2LDYgKzc3ODgsOCBAQAogCQkyNjU1NDEzNzE0ODk4MTFDMDAwREZDNUQgLyog
S2V5RXZlbnRDb2Rlc0lPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBLZXlF
dmVudENvZGVzSU9TLmg7IHBhdGggPSBpb3MvS2V5RXZlbnRDb2Rlc0lPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNjU1NDEzODE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBLZXlFdmVudElP
Uy5tbTsgcGF0aCA9IGlvcy9LZXlFdmVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXJzb3JJT1MuY3BwOyBwYXRoID0gaW9zL0N1
cnNvcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2QzE3QTNDMTQ5MUQy
RDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZpbGVTeXN0ZW1JT1MuaDsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxl
U3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRmls
ZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVND
SUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNB
U0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RjQwRDQ5MTQ5
MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3MvRXZlbnRMb29wSU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTE3QjU1RTE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMYXllckZsdXNoU2NoZWR1bGVyLmNwcDsgcGF0aCA9IGNhL0xheWVyRmx1c2hT
Y2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2MjgsNiArMTc2
MzIsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyNkY0MEQ0
OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovLAorCQkJCTI2QzE3QTNDMTQ5
MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLmggKi8sCisJCQkJMjZDMTdBM0QxNDkxRDJE
NDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi8sCiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAw
MERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8sCiAJCQkJMjY1NTQxMzcxNDg5ODExQzAwMERGQzVE
IC8qIEtleUV2ZW50Q29kZXNJT1MuaCAqLywKIAkJCQkyNjU1NDEzODE0ODk4MTFDMDAwREZDNUQg
LyogS2V5RXZlbnRJT1MubW0gKi8sCkBAIC0yNDc4MSw2ICsyNDc4Nyw3IEBACiAJCQkJMjY1NTQx
MzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLAog
CQkJCThBMTk1OTMyMTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCThBMTk1OTM0MTQ3RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1l
ZEZsb3dJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjZDMTdBM0UxNDkxRDJENDAwRDEy
QkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc2NjEsNiArMjc2Njgs
NyBAQAogCQkJCUQ3NjEzQTUwMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRDc2MTNBQzQxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0
TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBMTk1OTMzMTQ3RUExNkUwMEQxRUE2
MSAvKiBET01XZWJLaXROYW1lZEZsb3cubW0gaW4gU291cmNlcyAqLywKKwkJCQkyNkMxN0EzRjE0
OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0ZpbGVTeXN0ZW1JT1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9GaWxlU3lzdGVtSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhMmY4
N2NjYjMyMDAyNDcyYWRmNmM3NWVmMTg0NTk2NDg3MDNhMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9GaWxlU3lzdGVtSU9TLmgKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RmlsZVN5c3RlbUlPU19oCisjZGVmaW5lIEZpbGVTeXN0ZW1JT1NfaAorCitAY2xhc3MgTlNTdHJp
bmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURp
cmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKK05TU3RyaW5nICpjcmVhdGVUZW1w
b3JhcnlGaWxlKE5TU3RyaW5nICpkaXJlY3RvcnlQYXRoLCBOU1N0cmluZyAqZmlsZVByZWZpeCk7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEZpbGVTeXN0ZW1JT1NfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0ZpbGVTeXN0ZW1JT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRmlsZVN5c3RlbUlPUy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZTY2MDUwNTYzMDExZTE5N2YzMmY3M2I4MzU4M2MxMGUyNTM3MGQzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0ZpbGVTeXN0ZW1JT1MubW0KQEAgLTAs
MCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZpbGVTeXN0ZW1JT1MuaCIKKworI2ltcG9y
dCAiRmlsZVN5c3RlbS5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK05TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVj
dG9yeVByZWZpeCkKK3sKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5
RGlyZWN0b3J5KCk7CisgICAgaWYgKCF0ZW1wRGlyZWN0b3J5IHx8ICFbdGVtcERpcmVjdG9yeSBs
ZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKCFkaXJlY3RvcnlQcmVmaXgg
fHwgIVtkaXJlY3RvcnlQcmVmaXggbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TU3RyaW5nICp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50ID0gW2RpcmVjdG9yeVByZWZpeCBzdHJp
bmdCeUFwcGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOworICAgIGNvbnN0IGNoYXIqIHRlbXBE
aXJlY3RvcnlDU3RyaW5nID0gW1t0ZW1wRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDp0ZW1wRGlyZWN0b3J5Q29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25d
OworICAgIGlmICghdGVtcERpcmVjdG9yeUNTdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBEaXJlY3RvcnlDU3RyaW5nKTsK
KyAgICBBU1NFUlQobGVuZ3RoIDw9IE1BWFBBVEhMRU4pOworICAgIGlmIChsZW5ndGggPiBNQVhQ
QVRITEVOKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aFBs
dXNOdWxsVGVybWluYXRvciA9IGxlbmd0aCArIDE7CisgICAgVmVjdG9yPGNoYXIsIE1BWFBBVEhM
RU4gKyAxPiBwYXRoKGxlbmd0aFBsdXNOdWxsVGVybWluYXRvcik7CisgICAgbWVtY3B5KHBhdGgu
ZGF0YSgpLCB0ZW1wRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsK
KworICAgIGlmICghbWtkdGVtcChwYXRoLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOworfQorCitO
U1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZShOU1N0cmluZyAqZGlyZWN0b3J5UGF0aCwgTlNT
dHJpbmcgKmZpbGVQcmVmaXgpCit7CisgICAgaWYgKCFkaXJlY3RvcnlQYXRoIHx8ICFbZGlyZWN0
b3J5UGF0aCBsZW5ndGhdIHx8ICFmaWxlUHJlZml4IHx8ICFbZmlsZVByZWZpeCBsZW5ndGhdKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBGaWxlQ29tcG9uZW50ID0g
W2ZpbGVQcmVmaXggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCItWFhYWFhYWFgiXTsKKyAgICBj
b25zdCBjaGFyKiB0ZW1wbGF0ZVBhdGhDU3RyaW5nID0gW1tkaXJlY3RvcnlQYXRoIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wRmlsZUNvbXBvbmVudF0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uXTsKKyAgICBpZiAoIXRlbXBsYXRlUGF0aENTdHJpbmcpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHRlbXBsYXRlUGF0aENT
dHJpbmcpOworICAgIEFTU0VSVChsZW5ndGggPD0gTUFYUEFUSExFTik7CisgICAgaWYgKGxlbmd0
aCA+IE1BWFBBVEhMRU4pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVuZ3RoICsgMTsKKyAgICBWZWN0b3I8Y2hhciwg
TUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKyAgICBtZW1j
cHkocGF0aC5kYXRhKCksIHRlbXBsYXRlUGF0aENTdHJpbmcsIGxlbmd0aFBsdXNOdWxsVGVybWlu
YXRvcik7CisKKyAgICBpbnQgZmQgPSBta3N0ZW1wKHBhdGguZGF0YSgpKTsKKyAgICBpZiAoZmQg
PCAwKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaW50IGVyciA9IGZjaG1vZChmZCwgU19J
UlVTUiB8IFNfSVdVU1IpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIGNsb3NlKGZkKTsK
KyAgICAgICAgdW5saW5rKHBhdGguZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKKyAgICBjbG9zZShmZCk7CisgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gc3RyaW5nV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjpwYXRoLmRhdGEoKSBsZW5n
dGg6bGVuZ3RoXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVN
YW5hZ2VyRXh0cmFzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJF
eHRyYXMuaAppbmRleCBlOWEwZmVjNDc4ZTAyZTIwNWE3N2JjYWEzMTBiNWQ2M2U2NGY2ZmI1Li4x
ZGVhNDYzOWFmNTJkMDBkNTk1NDgyM2FjOTRjZTc0NWJjMTk0ZWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
OCArMjksMTUgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiBAaW50ZXJm
YWNlIE5TRmlsZU1hbmFnZXIgKFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMpCisjaWYgIVBMQVRGT1JN
KElPUykKIC0gKHZvaWQpX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDooTlNTdHJpbmcgKilVUkxTdHJp
bmcgcmVmZXJyZXI6KE5TU3RyaW5nICopcmVmZXJyZXIgYXRQYXRoOihOU1N0cmluZyAqKXBhdGg7
CiAtIChOU1N0cmluZyAqKV93ZWJraXRfc3RhcnR1cFZvbHVtZU5hbWU7CisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKKworI2lmIFBMQVRGT1JNKElPUykKKy0gKE5TU3RyaW5nICopX3dlYmtpdF9j
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6KE5TU3RyaW5nICopcHJl
Zml4OworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogLSAoTlNTdHJpbmcgKilfd2Via2l0X3Bh
dGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoOihOU1N0cmluZyAqKXBhdGg7CiBAZW5kCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRl
eCAzOWQ0ODljZmRmZmRmZGE1NDZmMjUzYjI4NGFiMTE1YTlmYjEwYjc0Li45ZWZmM2Q3ZGRmMDcz
Y2I4NTljYTMwZTA2NDlmMDJlOWFlNWU2YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBAIGV4dGVybiAi
QyIgREFEaXNrUmVmIERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQYXRoKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgREFTZXNzCiAKIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJOU0Zp
bGVNYW5hZ2VyRXh0cmFzKQogCisjaWYgIVBMQVRGT1JNKElPUykKIAogdHlwZWRlZiBzdHJ1Y3Qg
TWV0YURhdGFJbmZvCiB7CkBAIC0xMDUsNiArMTA2LDE1IEBAIHN0YXRpYyB2b2lkICpzZXRNZXRh
RGF0YSh2b2lkKiBjb250ZXh0KQogICAgIHJldHVybiBXZWJDRkF1dG9yZWxlYXNlKGRpc2tOYW1l
LmxlYWtSZWYoKSk7CiB9CiAKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorCisjaWYgUExBVEZP
Uk0oSU9TKQorLSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdp
dGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7Cit9CisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQorCiAvLyAtW05TRmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpdIHJldHVybnMg
Tk8gaWYgdGhlcmUgaXMgYSBicm9rZW4gc3ltbGluayBhdCB0aGUgcGF0aC4KIC8vIFNvIHdlIHVz
ZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQsIHdoaWNoIHJldHVybnMgWUVTIGlmIHRoZXJlIGlzIGFu
eXRoaW5nIHRoZXJlLCBpbmNsdWRpbmcKIC8vIGEgYnJva2VuIHN5bWxpbmsuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118670</attachid>
            <date>2011-12-09 17:26:42 -0800</date>
            <delta_ts>2011-12-09 20:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74164-20111209172641.patch</filename>
            <type>text/plain</type>
            <size>11788</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRhYTAwMDFkZjlhODJm
YjIyZjQyMjA4MTc1ZmVmNzQ1NjYzZDcyYi4uZmQ3NDQ2ZTdhYTJhODNkYjZkYzZhN2EwNzI3NWQy
YzFmYzllYjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTA5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgRmls
ZVN5c3RlbSBmdW5jdGlvbnMgb2YgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDE2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCBvbiBpT1MgZm9yIHRlbXBv
cmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL0ZpbGVTeXN0ZW1JT1MuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL0ZpbGVTeXN0ZW1JT1MubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFyeUZpbGUp
OgorCiAyMDExLTEyLTA5ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAK
ICAgICAgICAgU21hbGwgc3R5bGUgZml4IG9uIERyYWdEYXRhQmxhY2tCZXJyeS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggMGE3MDM5ZDhkZjY4NDQ4YTEzOGFmYTIzZWVmOWUxMDZiZTk4MTcw
OS4uMmQ3ZTAyYTY2NDQ4OTBiODc2YTBmZTRiMDgxYzk5NDUyNzAzNTRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTE1NjAsNiArMTU2MCwxMCBAQCBfd2tHZXROU0V2ZW50TW9tZW50dW1QaGFz
ZQogX3drR2V0TWFjT1NYVmVyc2lvblN0cmluZwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Mp
CitfX1pON1dlYkNvcmUyNGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeUVQOE5TU3RyaW5nCisjZW5k
aWYKKwogX3drVW5yZWdpc3RlclVuaXF1ZUlkRm9yRWxlbWVudAogX3drQWNjZXNzaWJpbGl0eUhh
bmRsZUZvY3VzQ2hhbmdlZAogX3drR2V0QVhUZXh0TWFya2VyVHlwZUlECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDkzNTZiZmU3
YjNmNDQxMWE2YzlhMTE0OTdmNGUzNDE2NTk4ZjJmZC4uYTg2MjQ2ODg0NWMwY2NjYzc5YThkY2Ni
MGRmMWU5MzhiYjk2Zjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgwLDYgKzY4MCw4IEBACiAJCTI2NTU0MTM5MTQ4OTgx
MUMwMDBERkM1RCAvKiBLZXlFdmVudENvZGVzSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjU1NDEzNzE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZl
bnRDb2Rlc0lPUy5oICovOyB9OwogCQkyNjU1NDEzQTE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZl
bnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NjU1NDEzODE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRJT1MubW0gKi87IH07CiAJCTI2NTU0
MTUyMTQ4OUIyMzMwMDBERkM1RCAvKiBDdXJzb3JJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1
cnNvcklPUy5jcHAgKi87IH07CisJCTI2QzE3QTNFMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lz
dGVtSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NkMxN0EzQzE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oICovOyB9OworCQkyNkMx
N0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJBMiAv
KiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEExMDEzMEE5RkNBMDA4RUI3QjIgLyog
VGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJ
RmFzdFBhdGguaCAqLzsgfTsKIAkJMjZGNDBENEExNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50TG9v
cElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2
RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi87IH07CiAJCTI5MTdC
NTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MTdCNTVFMTQ3MzQ5NkMwMDUy
QzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCAqLzsgfTsKQEAgLTc3OTEsNiArNzc5Myw4
IEBACiAJCTI2NTU0MTM3MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudENvZGVzSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEtleUV2ZW50Q29kZXNJT1MuaDsgcGF0aCA9
IGlvcy9LZXlFdmVudENvZGVzSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
NTU0MTM4MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEtleUV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL0tleUV2
ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjU1NDE0QjE0ODlBQTJC
MDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEN1cnNvcklPUy5jcHA7IHBhdGggPSBpb3MvQ3Vyc29ySU9TLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0
ZW1JT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVN5c3RlbUlPUy5o
OyBwYXRoID0gaW9zL0ZpbGVTeXN0ZW1JT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBGaWxlU3lzdGVtSU9TLm1tOyBwYXRoID0g
aW9zL0ZpbGVTeXN0ZW1JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RTk4
QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGNDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50
TG9vcElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEV2ZW50
TG9vcElPUy5tbTsgcGF0aCA9IGlvcy9FdmVudExvb3BJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5MTdCNTVFMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExheWVyRmx1c2hT
Y2hlZHVsZXIuY3BwOyBwYXRoID0gY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYzMyw2ICsxNzYzNyw4IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTI2RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBF
dmVudExvb3BJT1MubW0gKi8sCisJCQkJMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVT
eXN0ZW1JT1MuaCAqLywKKwkJCQkyNkMxN0EzRDE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3Rl
bUlPUy5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNw
cCAqLywKIAkJCQkyNjU1NDEzNzE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRDb2Rlc0lPUy5o
ICovLAogCQkJCTI2NTU0MTM4MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudElPUy5tbSAqLywK
QEAgLTI0Nzg5LDYgKzI0Nzk1LDcgQEAKIAkJCQkyNjU1NDEzOTE0ODk4MTFDMDAwREZDNUQgLyog
S2V5RXZlbnRDb2Rlc0lPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAw
RDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5
MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyNkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzY3MSw2ICsyNzY3OCw3IEBACiAJCQkJRDc2MTNBNTAxNDc0
RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlE
NzYxM0FDNDE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOEExOTU5MzMxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxv
dy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI2QzE3QTNGMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxl
U3lzdGVtSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRmlsZVN5c3RlbUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0ZpbGVTeXN0ZW1JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmEyZjg3Y2NiMzIwMDI0NzJhZGY2Yzc1ZWYx
ODQ1OTY0ODcwM2ExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0ZpbGVTeXN0ZW1JT1MuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlU3lzdGVtSU9TX2gKKyNkZWZp
bmUgRmlsZVN5c3RlbUlPU19oCisKK0BjbGFzcyBOU1N0cmluZzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJl
Y3RvcnlQcmVmaXgpOworTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeUZpbGUoTlNTdHJpbmcgKmRp
cmVjdG9yeVBhdGgsIE5TU3RyaW5nICpmaWxlUHJlZml4KTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRmlsZVN5c3RlbUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRmlsZVN5c3RlbUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9GaWxlU3lzdGVtSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjYwNTA1NjMwMTFlMTk3ZjMy
ZjczYjgzNTgzYzEwZTI1MzcwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRmlsZVN5c3RlbUlPUy5tbQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiRmlsZVN5c3RlbUlPUy5oIgorCisjaW1wb3J0ICJGaWxlU3lzdGVtLmgiCisKKyNp
ZiBQTEFURk9STShJT1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTlNTdHJpbmcgKmNyZWF0
ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQoreworICAgIE5T
U3RyaW5nICp0ZW1wRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBpZiAo
IXRlbXBEaXJlY3RvcnkgfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBpZiAoIWRpcmVjdG9yeVByZWZpeCB8fCAhW2RpcmVjdG9yeVByZWZpeCBs
ZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rv
cnlDb21wb25lbnQgPSBbZGlyZWN0b3J5UHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAi
LVhYWFhYWFhYIl07CisgICAgY29uc3QgY2hhciogdGVtcERpcmVjdG9yeUNTdHJpbmcgPSBbW3Rl
bXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnRlbXBEaXJlY3RvcnlD
b21wb25lbnRdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07CisgICAgaWYgKCF0ZW1wRGlyZWN0
b3J5Q1N0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5n
dGggPSBzdHJsZW4odGVtcERpcmVjdG9yeUNTdHJpbmcpOworICAgIEFTU0VSVChsZW5ndGggPD0g
TUFYUEFUSExFTik7CisgICAgaWYgKGxlbmd0aCA+IE1BWFBBVEhMRU4pCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yID0gbGVu
Z3RoICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTiArIDE+IHBhdGgobGVuZ3RoUGx1
c051bGxUZXJtaW5hdG9yKTsKKyAgICBtZW1jcHkocGF0aC5kYXRhKCksIHRlbXBEaXJlY3RvcnlD
U3RyaW5nLCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworCisgICAgaWYgKCFta2R0ZW1wKHBh
dGguZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRpb246
cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07Cit9CisKK05TU3RyaW5nICpjcmVhdGVUZW1wb3Jh
cnlGaWxlKE5TU3RyaW5nICpkaXJlY3RvcnlQYXRoLCBOU1N0cmluZyAqZmlsZVByZWZpeCkKK3sK
KyAgICBpZiAoIWRpcmVjdG9yeVBhdGggfHwgIVtkaXJlY3RvcnlQYXRoIGxlbmd0aF0gfHwgIWZp
bGVQcmVmaXggfHwgIVtmaWxlUHJlZml4IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBOU1N0cmluZyAqdGVtcEZpbGVDb21wb25lbnQgPSBbZmlsZVByZWZpeCBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi1YWFhYWFhYWCJdOworICAgIGNvbnN0IGNoYXIqIHRlbXBsYXRlUGF0
aENTdHJpbmcgPSBbW2RpcmVjdG9yeVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OnRlbXBGaWxlQ29tcG9uZW50XSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOworICAgIGlmICgh
dGVtcGxhdGVQYXRoQ1N0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNp
emVfdCBsZW5ndGggPSBzdHJsZW4odGVtcGxhdGVQYXRoQ1N0cmluZyk7CisgICAgQVNTRVJUKGxl
bmd0aCA8PSBNQVhQQVRITEVOKTsKKyAgICBpZiAobGVuZ3RoID4gTUFYUEFUSExFTikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIGNvbnN0IHNpemVfdCBsZW5ndGhQbHVzTnVsbFRlcm1pbmF0
b3IgPSBsZW5ndGggKyAxOworICAgIFZlY3RvcjxjaGFyLCBNQVhQQVRITEVOICsgMT4gcGF0aChs
ZW5ndGhQbHVzTnVsbFRlcm1pbmF0b3IpOworICAgIG1lbWNweShwYXRoLmRhdGEoKSwgdGVtcGxh
dGVQYXRoQ1N0cmluZywgbGVuZ3RoUGx1c051bGxUZXJtaW5hdG9yKTsKKworICAgIGludCBmZCA9
IG1rc3RlbXAocGF0aC5kYXRhKCkpOworICAgIGlmIChmZCA8IDApCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBpbnQgZXJyID0gZmNobW9kKGZkLCBTX0lSVVNSIHwgU19JV1VTUik7CisgICAg
aWYgKGVyciA8IDApIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICB1bmxpbmsocGF0aC5k
YXRhKCkpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGNsb3NlKGZkKTsKKyAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCg==
</data>
<flag name="review"
          id="118481"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>