<?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>34323</bug_id>
          
          <creation_ts>2010-01-29 03:19:35 -0800</creation_ts>
          <short_desc>[BREWMP] Port FileSystem</short_desc>
          <delta_ts>2010-06-23 19:55:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33564</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beergun</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joybro201</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185795</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-29 03:19:35 -0800</bug_when>
    <thetext>Port FileSystem to BREWMP with IFileMgr interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185798</commentid>
    <comment_count>1</comment_count>
      <attachid>47696</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-29 03:23:16 -0800</bug_when>
    <thetext>Created attachment 47696
Port FileSystem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185801</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-29 03:29:05 -0800</bug_when>
    <thetext>Attachment 47696 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/brew/FileSystemBrew.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/brew/FileSystemBrew.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/brew/FileSystemBrew.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185802</commentid>
    <comment_count>3</comment_count>
      <attachid>47697</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-29 03:29:58 -0800</bug_when>
    <thetext>Created attachment 47697
Port FileSystem

Sort header files alphabetically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186622</commentid>
    <comment_count>4</comment_count>
      <attachid>47697</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 15:54:17 -0800</bug_when>
    <thetext>Comment on attachment 47697
Port FileSystem

Given how often you use this in various places, seems you might want to add it to a common header at some point:
 49     IShell* shell = reinterpret_cast&lt;AEEApplet*&gt;(GETAPPINSTANCE())-&gt;m_pIShell;

This seems like  a bad idea:
 47 static PassOwnPtr&lt;IFileMgr&gt; createIFileMgr()

can you actually call &quot;delete&quot; with an IFileMgr pointer ant it will do the right thing?  It doesn&apos;t need some special release call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186719</commentid>
    <comment_count>5</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-02-01 17:24:32 -0800</bug_when>
    <thetext>I modified OwnPtr to delete an IFileMgr pointer correctly though the patch is not submitted yet. However, GOwnPtr-like smart pointer sounds better as you suggested in https://bugs.webkit.org/show_bug.cgi?id=34412.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187310</commentid>
    <comment_count>6</comment_count>
      <attachid>48012</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-02-03 03:47:37 -0800</bug_when>
    <thetext>Created attachment 48012
Port FileSystem

Use OwnPtrBrew submitted in https://bugs.webkit.org/show_bug.cgi?id=34518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188631</commentid>
    <comment_count>7</comment_count>
      <attachid>48012</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-02-08 08:16:30 -0800</bug_when>
    <thetext>Comment on attachment 48012
Port FileSystem

createFileMgr can be replaced with createInstanceBrew submitted in https://bugs.webkit.org/show_bug.cgi?id=34705. Wait until it is reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235668</commentid>
    <comment_count>8</comment_count>
      <attachid>58214</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-06-08 23:25:49 -0700</bug_when>
    <thetext>Created attachment 58214
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238227</commentid>
    <comment_count>9</comment_count>
      <attachid>58747</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-06-14 20:37:41 -0700</bug_when>
    <thetext>Created attachment 58747
Revised patch

Fix a typo: utf -&gt; utf8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241832</commentid>
    <comment_count>10</comment_count>
      <attachid>58747</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-23 07:00:52 -0700</bug_when>
    <thetext>Comment on attachment 58747
Revised patch

Looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242264</commentid>
    <comment_count>11</comment_count>
      <attachid>58747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-23 19:55:53 -0700</bug_when>
    <thetext>Comment on attachment 58747
Revised patch

Clearing flags on attachment: 58747

Committed r61729: &lt;http://trac.webkit.org/changeset/61729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242265</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-23 19:55:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47696</attachid>
            <date>2010-01-29 03:23:16 -0800</date>
            <delta_ts>2010-01-29 03:29:58 -0800</delta_ts>
            <desc>Port FileSystem</desc>
            <filename>FileSystem.patch</filename>
            <type>text/plain</type>
            <size>10640</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDA1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDEtMjkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzIzCisKKyAgICAgICAgUG9ydCBGaWxlU3lzdGVtIHRvIEJS
RVdNUCB3aXRoIElGaWxlTWdyIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJRmlsZU1ncik6CisgICAgICAgIChXZWJDb3Jl
OjpjYW5vbmljYWxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAg
IChXZWJDb3JlOjpob21lRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0
RmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZUZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6dW5s
b2FkTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnkpOgorCiAyMDEwLTAx
LTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZp
c2lvbiA1NDAzNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBISU5TVEFOQ0VfXyogSElOU1RB
TkNFOwogdHlwZWRlZiBISU5TVEFOQ0UgSE1PRFVMRTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
QlJFV01QKQordHlwZWRlZiBzdHJ1Y3QgX0lGaWxlIElGaWxlOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1N0cmluZzsKQEAgLTExNSw2ICsxMTksMTEgQEAgdHlwZWRl
ZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOwogLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFO
RExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwogLy8g
YXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3Zl
IHRoaXMgaW50byB0aGUgLmNwcC4KIGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbGlmIFBM
QVRGT1JNKEJSRVdNUCkKK3R5cGVkZWYgSUZpbGUqIFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0
IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKK3R5cGVk
ZWYgdm9pZCogUGxhdGZvcm1Nb2R1bGU7Cit0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3JtTW9kdWxl
VmVyc2lvbjsKICNlbHNlCiB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29tYXBueSAxMDAsIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorCisjaW5j
bHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CisKKyNpbmNsdWRlIDxBRUVBcHBHZW4uaD4KKyNpbmNsdWRlIDxB
RUVTdGRMaWIuaD4KKyNpbmNsdWRlIDxBRUVGaWxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIFBhc3NPd25QdHI8SUZpbGVNZ3I+IGNyZWF0ZUlGaWxlTWdyKCkKK3sKKyAgICBJ
U2hlbGwqIHNoZWxsID0gcmVpbnRlcnByZXRfY2FzdDxBRUVBcHBsZXQqPihHRVRBUFBJTlNUQU5D
RSgpKS0+bV9wSVNoZWxsOworCisgICAgSUZpbGVNZ3IqIGZpbGVNZ3I7CisgICAgSVNIRUxMX0Ny
ZWF0ZUluc3RhbmNlKHNoZWxsLCBBRUVDTFNJRF9GSUxFTUdSLCByZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmZpbGVNZ3IpKTsKKworICAgIHJldHVybiBmaWxlTWdyOworfQorCitzdGF0aWMgU3Ry
aW5nIGNhbm9uaWNhbFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIE93blB0cjxJRmls
ZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIC8vIEdldCB0aGUgYnVmZmVy
IHNpemUgcmVxdWlyZWQgdG8gcmVzb2x2ZSB0aGUgcGF0aC4KKyAgICBpbnQgY2Fub25pY2FsUGF0
aExlbjsKKyAgICBJRklMRU1HUl9SZXNvbHZlUGF0aChmaWxlTWdyLmdldCgpLCBwYXRoLnV0Zjgo
KS5kYXRhKCksIDAsICZjYW5vbmljYWxQYXRoTGVuKTsKKworICAgIC8vIFJlc29sdmUgdGhlIHBh
dGggdG8gdGhlIGNhbm9uaWNhbCBwYXRoLgorICAgIFZlY3RvcjxjaGFyPiBjYW5vbmljYWxQYXRo
QnVmZmVyKGNhbm9uaWNhbFBhdGhMZW4pOworICAgIElGSUxFTUdSX1Jlc29sdmVQYXRoKGZpbGVN
Z3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSwgY2Fub25pY2FsUGF0aEJ1ZmZlci5kYXRhKCks
ICZjYW5vbmljYWxQYXRoTGVuKTsKKworICAgIFN0cmluZyBjYW5vbmljYWxQYXRoKGNhbm9uaWNh
bFBhdGhCdWZmZXIuZGF0YSgpKTsKKworICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgJy8nLgor
ICAgIGludCBsYXN0RGl2UG9zID0gY2Fub25pY2FsUGF0aC5yZXZlcnNlRmluZCgnLycpOworICAg
IGludCBlbmRQb3MgPSBjYW5vbmljYWxQYXRoLmxlbmd0aCgpOworICAgIGlmIChsYXN0RGl2UG9z
ID09IGVuZFBvcyAtIDEpCisgICAgICAgIGNhbm9uaWNhbFBhdGggPSBjYW5vbmljYWxQYXRoLnN1
YnN0cmluZygwLCBjYW5vbmljYWxQYXRoLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gY2Fu
b25pY2FsUGF0aDsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0KQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJ
RmlsZU1ncigpKTsKKyAgICBGaWxlSW5mbyBpbmZvOworCisgICAgaWYgKElGSUxFTUdSX0dldElu
Zm8oZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCkuZGF0YSgpLCAmaW5mbykgPT0gU1VDQ0VTUykg
eworICAgICAgICByZXN1bHQgPSBpbmZvLmR3U2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0
IGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgaW4gQlJFVy4KKy8vIElGSUxFTUdSX0dldEluZm9FeCgp
IHJldHVybnMgb25seSBmaWxlIGNyZWF0aW9uIHRpbWUuCitib29sIGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIHJldHVy
biAoSUZJTEVNR1JfVGVzdChmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpID09IFNV
Q0NFU1MpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIHJldHVy
biAoSUZJTEVNR1JfUmVtb3ZlKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSkgPT0g
U1VDQ0VTUyk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsK
KworICAgIHJldHVybiAoSUZJTEVNR1JfUm1EaXIoZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCku
ZGF0YSgpKSA9PSBTVUNDRVNTKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIGlm
IChjb21wb25lbnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIFZlY3Rv
cjxVQ2hhciwgMTAyND4gYnVmZmVyOworCisgICAgYnVmZmVyLmFwcGVuZChwYXRoLmNoYXJhY3Rl
cnMoKSwgcGF0aC5sZW5ndGgoKSk7CisKKyAgICBpZiAoYnVmZmVyLmxhc3QoKSAhPSBMJy8nICYm
IGNvbXBvbmVudFswXSAhPSBMJy8nKQorICAgICAgICBidWZmZXIuYXBwZW5kKEwnLycpOworCisg
ICAgYnVmZmVyLmFwcGVuZChjb21wb25lbnQuY2hhcmFjdGVycygpLCBjb21wb25lbnQubGVuZ3Ro
KCkpOworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
K30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJikKK3sK
KyAgICByZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBib29sIG1ha2VBbGxEaXJlY3RvcmllcyhPd25Q
dHI8SUZpbGVNZ3I+JiBmaWxlTWdyLCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKHBh
dGggPT0gY2Fub25pY2FsUGF0aChBRUVGU19IT01FX0RJUikpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaW50IGxhc3REaXZQb3MgPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAgaW50
IGVuZFBvcyA9IHBhdGgubGVuZ3RoKCk7CisgICAgaWYgKGxhc3REaXZQb3MgPT0gcGF0aC5sZW5n
dGgoKSAtIDEpIHsKKyAgICAgICAgZW5kUG9zIC09IDE7CisgICAgICAgIGxhc3REaXZQb3MgPSBw
YXRoLnJldmVyc2VGaW5kKCcvJywgbGFzdERpdlBvcyk7CisgICAgfQorCisgICAgaWYgKGxhc3RE
aXZQb3MgPiAwKSB7CisgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGZpbGVNZ3IsIHBh
dGguc3Vic3RyaW5nKDAsIGxhc3REaXZQb3MpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBTdHJpbmcgZm9sZGVyKHBhdGguc3Vic3RyaW5nKDAsIGVuZFBvcykpOwor
CisgICAgLy8gSUZJTEVNR1JfTWtEaXIgcmV0dXJuIFNVQ0NFU1Mgd2hlbiB0aGUgZmlsZSBpcyBz
dWNjZXNzZnVsbHkgY3JlYXRlZCBvciBpZiBmaWxlIGFscmVhZHkgZXhpc3RzLgorICAgIC8vIFNv
IHdlIG5lZWQgdG8gY2hlY2sgZmlsZWluZm8uYXR0cmliLgorICAgIElGSUxFTUdSX01rRGlyKGZp
bGVNZ3IuZ2V0KCksIGZvbGRlci51dGY4KCkuZGF0YSgpKTsKKworICAgIEZpbGVJbmZvIGZpbGVJ
bmZvOworICAgIGlmIChJRklMRU1HUl9HZXRJbmZvKGZpbGVNZ3IuZ2V0KCksIGZvbGRlci51dGY4
KCkuZGF0YSgpLCAmZmlsZUluZm8pICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBmaWxlSW5mby5hdHRyaWIgJiBfRkFfRElSOworfQorCitib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyPElGaWxlTWdy
PiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rv
cmllcyhmaWxlTWdyLCBjYW5vbmljYWxQYXRoKHBhdGgpKTsKK30KKworU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKEFFRUZTX0hPTUVfRElSKTsKK30KKwor
U3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworfQorCitTdHJpbmcg
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVOYW1l
ID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBkaXJOYW1lID0gU3RyaW5nKHBh
dGgpOworICAgIGRpck5hbWUudHJ1bmNhdGUoZGlyTmFtZS5sZW5ndGgoKSAtIHBhdGhHZXRGaWxl
TmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGRpck5hbWU7Cit9CisKK0NTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKK3sKKyAgICAvLyBCUkVXIGRvZXMgbm90IGhhdmUgYSBzeXN0ZW0td2lkZSB0ZW1w
b3JhcnkgZGlyZWN0b3J5LAorICAgIC8vIHVzZSAiZnM6L34vdG1wIiBhcyBvdXIgdGVtcG9yYXJ5
IGRpcmVjdG9yeS4KKyAgICBTdHJpbmcgdGVtcFBhdGgoImZzOi9+L3RtcCIpOworCisgICAgT3du
UHRyPElGaWxlTWdyPiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAgLy8gQ3JlYXRl
IHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0LgorICAgIElGSUxF
TUdSX01rRGlyKGZpbGVNZ3IuZ2V0KCksIHRlbXBQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
Ly8gTG9vcCB1bnRpbCB3ZSBmaW5kIGEgdGVtcG9yYXJ5IGZpbGVuYW1lIHRoYXQgZG9lcyBub3Qg
ZXhpc3QuCisgICAgaW50IG51bWJlciA9IHN0YXRpY19jYXN0PGludD4oV1RGOjpyYW5kb21OdW1i
ZXIoKSAqIDEwMDAwKTsKKyAgICBDU3RyaW5nIGZpbGVuYW1lOworICAgIGRvIHsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZW1wUGF0aCk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBy
ZWZpeCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG51bWJlcikpOwor
ICAgICAgICBmaWxlbmFtZSA9IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CisgICAgICAgIG51
bWJlcisrOworICAgIH0gd2hpbGUgKElGSUxFTUdSX1Rlc3QoZmlsZU1nci5nZXQoKSwgZmlsZW5h
bWUuZGF0YSgpKSA9PSBTVUNDRVNTKTsKKworICAgIElGaWxlKiB0ZW1wRmlsZSA9IElGSUxFTUdS
X09wZW5GaWxlKGZpbGVNZ3IuZ2V0KCksIGZpbGVuYW1lLmRhdGEoKSwgX09GTV9DUkVBVEUpOwor
ICAgIGlmICh0ZW1wRmlsZSkgeworICAgICAgICBoYW5kbGUgPSB0ZW1wRmlsZTsKKyAgICAgICAg
cmV0dXJuIGZpbGVuYW1lOworICAgIH0KKworICAgIHJldHVybiBDU3RyaW5nKCk7Cit9CisKK3Zv
aWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgSUZJTEVfUmVsZWFzZShoYW5kbGUpOworICAg
ICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworaW50
IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisgICAgd2hpbGUg
KHRvdGFsQnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4g
PSBJRklMRV9Xcml0ZShoYW5kbGUsIGRhdGEsIGxlbmd0aCAtIHRvdGFsQnl0ZXNXcml0dGVuKTsK
KyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPiAwKQorICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0
ZW4gKz0gYnl0ZXNXcml0dGVuOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRl
bjsKK30KKworYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRl
cikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBieSBQbHVnaW5EYXRhYmFz
ZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzLgorICAgIG5vdEltcGxlbWVudGVkKCk7CisK
KyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47697</attachid>
            <date>2010-01-29 03:29:58 -0800</date>
            <delta_ts>2010-02-03 03:47:37 -0800</delta_ts>
            <desc>Port FileSystem</desc>
            <filename>FileSystem.patch</filename>
            <type>text/plain</type>
            <size>10640</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDA1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDEtMjkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzIzCisKKyAgICAgICAgUG9ydCBGaWxlU3lzdGVtIHRvIEJS
RVdNUCB3aXRoIElGaWxlTWdyIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJRmlsZU1ncik6CisgICAgICAgIChXZWJDb3Jl
OjpjYW5vbmljYWxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAg
IChXZWJDb3JlOjpob21lRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0
RmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZUZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6dW5s
b2FkTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnkpOgorCiAyMDEwLTAx
LTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZp
c2lvbiA1NDAzNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBISU5TVEFOQ0VfXyogSElOU1RB
TkNFOwogdHlwZWRlZiBISU5TVEFOQ0UgSE1PRFVMRTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
QlJFV01QKQordHlwZWRlZiBzdHJ1Y3QgX0lGaWxlIElGaWxlOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1N0cmluZzsKQEAgLTExNSw2ICsxMTksMTEgQEAgdHlwZWRl
ZiBIQU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOwogLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFO
RExFX1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwogLy8g
YXZvaWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3Zl
IHRoaXMgaW50byB0aGUgLmNwcC4KIGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbGlmIFBM
QVRGT1JNKEJSRVdNUCkKK3R5cGVkZWYgSUZpbGUqIFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0
IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKK3R5cGVk
ZWYgdm9pZCogUGxhdGZvcm1Nb2R1bGU7Cit0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3JtTW9kdWxl
VmVyc2lvbjsKICNlbHNlCiB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29tYXBueSAxMDAsIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorCisjaW5j
bHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisKKyNpbmNsdWRl
IDxBRUVBcHBHZW4uaD4KKyNpbmNsdWRlIDxBRUVGaWxlLmg+CisjaW5jbHVkZSA8QUVFU3RkTGli
Lmg+CisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIFBhc3NPd25QdHI8SUZpbGVNZ3I+IGNyZWF0ZUlGaWxlTWdyKCkKK3sKKyAgICBJ
U2hlbGwqIHNoZWxsID0gcmVpbnRlcnByZXRfY2FzdDxBRUVBcHBsZXQqPihHRVRBUFBJTlNUQU5D
RSgpKS0+bV9wSVNoZWxsOworCisgICAgSUZpbGVNZ3IqIGZpbGVNZ3I7CisgICAgSVNIRUxMX0Ny
ZWF0ZUluc3RhbmNlKHNoZWxsLCBBRUVDTFNJRF9GSUxFTUdSLCByZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmZpbGVNZ3IpKTsKKworICAgIHJldHVybiBmaWxlTWdyOworfQorCitzdGF0aWMgU3Ry
aW5nIGNhbm9uaWNhbFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIE93blB0cjxJRmls
ZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIC8vIEdldCB0aGUgYnVmZmVy
IHNpemUgcmVxdWlyZWQgdG8gcmVzb2x2ZSB0aGUgcGF0aC4KKyAgICBpbnQgY2Fub25pY2FsUGF0
aExlbjsKKyAgICBJRklMRU1HUl9SZXNvbHZlUGF0aChmaWxlTWdyLmdldCgpLCBwYXRoLnV0Zjgo
KS5kYXRhKCksIDAsICZjYW5vbmljYWxQYXRoTGVuKTsKKworICAgIC8vIFJlc29sdmUgdGhlIHBh
dGggdG8gdGhlIGNhbm9uaWNhbCBwYXRoLgorICAgIFZlY3RvcjxjaGFyPiBjYW5vbmljYWxQYXRo
QnVmZmVyKGNhbm9uaWNhbFBhdGhMZW4pOworICAgIElGSUxFTUdSX1Jlc29sdmVQYXRoKGZpbGVN
Z3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSwgY2Fub25pY2FsUGF0aEJ1ZmZlci5kYXRhKCks
ICZjYW5vbmljYWxQYXRoTGVuKTsKKworICAgIFN0cmluZyBjYW5vbmljYWxQYXRoKGNhbm9uaWNh
bFBhdGhCdWZmZXIuZGF0YSgpKTsKKworICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgJy8nLgor
ICAgIGludCBsYXN0RGl2UG9zID0gY2Fub25pY2FsUGF0aC5yZXZlcnNlRmluZCgnLycpOworICAg
IGludCBlbmRQb3MgPSBjYW5vbmljYWxQYXRoLmxlbmd0aCgpOworICAgIGlmIChsYXN0RGl2UG9z
ID09IGVuZFBvcyAtIDEpCisgICAgICAgIGNhbm9uaWNhbFBhdGggPSBjYW5vbmljYWxQYXRoLnN1
YnN0cmluZygwLCBjYW5vbmljYWxQYXRoLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gY2Fu
b25pY2FsUGF0aDsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0KQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJ
RmlsZU1ncigpKTsKKyAgICBGaWxlSW5mbyBpbmZvOworCisgICAgaWYgKElGSUxFTUdSX0dldElu
Zm8oZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCkuZGF0YSgpLCAmaW5mbykgPT0gU1VDQ0VTUykg
eworICAgICAgICByZXN1bHQgPSBpbmZvLmR3U2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0
IGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgaW4gQlJFVy4KKy8vIElGSUxFTUdSX0dldEluZm9FeCgp
IHJldHVybnMgb25seSBmaWxlIGNyZWF0aW9uIHRpbWUuCitib29sIGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIHJldHVy
biAoSUZJTEVNR1JfVGVzdChmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpID09IFNV
Q0NFU1MpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIHJldHVy
biAoSUZJTEVNR1JfUmVtb3ZlKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSkgPT0g
U1VDQ0VTUyk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsK
KworICAgIHJldHVybiAoSUZJTEVNR1JfUm1EaXIoZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCku
ZGF0YSgpKSA9PSBTVUNDRVNTKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIGlm
IChjb21wb25lbnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIFZlY3Rv
cjxVQ2hhciwgMTAyND4gYnVmZmVyOworCisgICAgYnVmZmVyLmFwcGVuZChwYXRoLmNoYXJhY3Rl
cnMoKSwgcGF0aC5sZW5ndGgoKSk7CisKKyAgICBpZiAoYnVmZmVyLmxhc3QoKSAhPSBMJy8nICYm
IGNvbXBvbmVudFswXSAhPSBMJy8nKQorICAgICAgICBidWZmZXIuYXBwZW5kKEwnLycpOworCisg
ICAgYnVmZmVyLmFwcGVuZChjb21wb25lbnQuY2hhcmFjdGVycygpLCBjb21wb25lbnQubGVuZ3Ro
KCkpOworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
K30KKworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJikKK3sK
KyAgICByZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBib29sIG1ha2VBbGxEaXJlY3RvcmllcyhPd25Q
dHI8SUZpbGVNZ3I+JiBmaWxlTWdyLCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKHBh
dGggPT0gY2Fub25pY2FsUGF0aChBRUVGU19IT01FX0RJUikpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaW50IGxhc3REaXZQb3MgPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAgaW50
IGVuZFBvcyA9IHBhdGgubGVuZ3RoKCk7CisgICAgaWYgKGxhc3REaXZQb3MgPT0gcGF0aC5sZW5n
dGgoKSAtIDEpIHsKKyAgICAgICAgZW5kUG9zIC09IDE7CisgICAgICAgIGxhc3REaXZQb3MgPSBw
YXRoLnJldmVyc2VGaW5kKCcvJywgbGFzdERpdlBvcyk7CisgICAgfQorCisgICAgaWYgKGxhc3RE
aXZQb3MgPiAwKSB7CisgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGZpbGVNZ3IsIHBh
dGguc3Vic3RyaW5nKDAsIGxhc3REaXZQb3MpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBTdHJpbmcgZm9sZGVyKHBhdGguc3Vic3RyaW5nKDAsIGVuZFBvcykpOwor
CisgICAgLy8gSUZJTEVNR1JfTWtEaXIgcmV0dXJuIFNVQ0NFU1Mgd2hlbiB0aGUgZmlsZSBpcyBz
dWNjZXNzZnVsbHkgY3JlYXRlZCBvciBpZiBmaWxlIGFscmVhZHkgZXhpc3RzLgorICAgIC8vIFNv
IHdlIG5lZWQgdG8gY2hlY2sgZmlsZWluZm8uYXR0cmliLgorICAgIElGSUxFTUdSX01rRGlyKGZp
bGVNZ3IuZ2V0KCksIGZvbGRlci51dGY4KCkuZGF0YSgpKTsKKworICAgIEZpbGVJbmZvIGZpbGVJ
bmZvOworICAgIGlmIChJRklMRU1HUl9HZXRJbmZvKGZpbGVNZ3IuZ2V0KCksIGZvbGRlci51dGY4
KCkuZGF0YSgpLCAmZmlsZUluZm8pICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBmaWxlSW5mby5hdHRyaWIgJiBfRkFfRElSOworfQorCitib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyPElGaWxlTWdy
PiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rv
cmllcyhmaWxlTWdyLCBjYW5vbmljYWxQYXRoKHBhdGgpKTsKK30KKworU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKEFFRUZTX0hPTUVfRElSKTsKK30KKwor
U3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJu
IHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworfQorCitTdHJpbmcg
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVOYW1l
ID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBkaXJOYW1lID0gU3RyaW5nKHBh
dGgpOworICAgIGRpck5hbWUudHJ1bmNhdGUoZGlyTmFtZS5sZW5ndGgoKSAtIHBhdGhHZXRGaWxl
TmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGRpck5hbWU7Cit9CisKK0NTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKK3sKKyAgICAvLyBCUkVXIGRvZXMgbm90IGhhdmUgYSBzeXN0ZW0td2lkZSB0ZW1w
b3JhcnkgZGlyZWN0b3J5LAorICAgIC8vIHVzZSAiZnM6L34vdG1wIiBhcyBvdXIgdGVtcG9yYXJ5
IGRpcmVjdG9yeS4KKyAgICBTdHJpbmcgdGVtcFBhdGgoImZzOi9+L3RtcCIpOworCisgICAgT3du
UHRyPElGaWxlTWdyPiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAgLy8gQ3JlYXRl
IHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0LgorICAgIElGSUxF
TUdSX01rRGlyKGZpbGVNZ3IuZ2V0KCksIHRlbXBQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
Ly8gTG9vcCB1bnRpbCB3ZSBmaW5kIGEgdGVtcG9yYXJ5IGZpbGVuYW1lIHRoYXQgZG9lcyBub3Qg
ZXhpc3QuCisgICAgaW50IG51bWJlciA9IHN0YXRpY19jYXN0PGludD4oV1RGOjpyYW5kb21OdW1i
ZXIoKSAqIDEwMDAwKTsKKyAgICBDU3RyaW5nIGZpbGVuYW1lOworICAgIGRvIHsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZW1wUGF0aCk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBy
ZWZpeCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG51bWJlcikpOwor
ICAgICAgICBmaWxlbmFtZSA9IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CisgICAgICAgIG51
bWJlcisrOworICAgIH0gd2hpbGUgKElGSUxFTUdSX1Rlc3QoZmlsZU1nci5nZXQoKSwgZmlsZW5h
bWUuZGF0YSgpKSA9PSBTVUNDRVNTKTsKKworICAgIElGaWxlKiB0ZW1wRmlsZSA9IElGSUxFTUdS
X09wZW5GaWxlKGZpbGVNZ3IuZ2V0KCksIGZpbGVuYW1lLmRhdGEoKSwgX09GTV9DUkVBVEUpOwor
ICAgIGlmICh0ZW1wRmlsZSkgeworICAgICAgICBoYW5kbGUgPSB0ZW1wRmlsZTsKKyAgICAgICAg
cmV0dXJuIGZpbGVuYW1lOworICAgIH0KKworICAgIHJldHVybiBDU3RyaW5nKCk7Cit9CisKK3Zv
aWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmIChpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgSUZJTEVfUmVsZWFzZShoYW5kbGUpOworICAg
ICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworaW50
IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCit7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisgICAgd2hpbGUg
KHRvdGFsQnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4g
PSBJRklMRV9Xcml0ZShoYW5kbGUsIGRhdGEsIGxlbmd0aCAtIHRvdGFsQnl0ZXNXcml0dGVuKTsK
KyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPiAwKQorICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0
ZW4gKz0gYnl0ZXNXcml0dGVuOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRl
bjsKK30KKworYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRl
cikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBieSBQbHVnaW5EYXRhYmFz
ZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzLgorICAgIG5vdEltcGxlbWVudGVkKCk7CisK
KyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKK30KKworfQo=
</data>
<flag name="review"
          id="30214"
          type_id="1"
          status="-"
          setter="skyul"
    />
    <flag name="commit-queue"
          id="30215"
          type_id="3"
          status="-"
          setter="skyul"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48012</attachid>
            <date>2010-02-03 03:47:37 -0800</date>
            <delta_ts>2010-06-08 23:25:49 -0700</delta_ts>
            <desc>Port FileSystem</desc>
            <filename>FileSystem.patch</filename>
            <type>text/plain</type>
            <size>10665</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDItMDMgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzIzCisKKyAgICAgICAgUG9ydCBGaWxlU3lzdGVtIHdpdGgg
SUZpbGVNZ3IgaW50ZXJmYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUlGaWxlTWdyKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbm9uaWNh
bFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZUV4aXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmhvbWVEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1bmxvYWRNb2R1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeSk6CisKIDIwMTAtMDItMDMgIE1pa2hh
aWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDU0MjY4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDYgKzYyLDEwIEBAIHR5cGVkZWYgc3RydWN0IEhJTlNUQU5DRV9fKiBISU5TVEFOQ0U7CiB0eXBl
ZGVmIEhJTlNUQU5DRSBITU9EVUxFOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShCUkVXTVApCit0
eXBlZGVmIHN0cnVjdCBfSUZpbGUgSUZpbGU7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU3RyaW5nOwpAQCAtMTE1LDYgKzExOSwxMSBAQCB0eXBlZGVmIEhBTkRMRSBQ
bGF0Zm9ybUZpbGVIYW5kbGU7CiAvLyBGSVhNRTogLTEgaXMgSU5WQUxJRF9IQU5ETEVfVkFMVUUs
IGRlZmluZWQgaW4gPHdpbmJhc2UuaD4uIENocm9taXVtIHRyaWVzIHRvCiAvLyBhdm9pZCB1c2lu
ZyBXaW5kb3dzIGhlYWRlcnMgaW4gaGVhZGVycy4gIFdlJ2QgcmF0aGVyIG1vdmUgdGhpcyBpbnRv
IHRoZSAuY3BwLgogY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOworI2VsaWYgUExBVEZPUk0oQlJF
V01QKQordHlwZWRlZiBJRmlsZSogUGxhdGZvcm1GaWxlSGFuZGxlOworY29uc3QgUGxhdGZvcm1G
aWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAwOwordHlwZWRlZiB2b2lkKiBQ
bGF0Zm9ybU1vZHVsZTsKK3R5cGVkZWYgdW5zaWduZWQgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uOwog
I2Vsc2UKIHR5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRsZTsKIGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlICJDU3Ry
aW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJPd25QdHJCcmV3
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVy
LmgiCisKKyNpbmNsdWRlIDxBRUVBcHBHZW4uaD4KKyNpbmNsdWRlIDxBRUVGaWxlLmg+CisjaW5j
bHVkZSA8QUVFU3RkTGliLmg+CisKKyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSGVscGVyIHRvIGNyZWF0ZSBhbiBJRmlsZU1nciBpbnN0
YW5jZS4KK3N0YXRpYyBJRmlsZU1nciogY3JlYXRlSUZpbGVNZ3IoKQoreworICAgIElTaGVsbCog
c2hlbGwgPSByZWludGVycHJldF9jYXN0PEFFRUFwcGxldCo+KEdFVEFQUElOU1RBTkNFKCkpLT5t
X3BJU2hlbGw7CisKKyAgICBJRmlsZU1nciogZmlsZU1ncjsKKyAgICBJU0hFTExfQ3JlYXRlSW5z
dGFuY2Uoc2hlbGwsIEFFRUNMU0lEX0ZJTEVNR1IsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
ZmlsZU1ncikpOworCisgICAgcmV0dXJuIGZpbGVNZ3I7Cit9CisKK3N0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyQnJldzxJRmlsZU1n
cj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKworICAgIC8vIEdldCB0aGUgYnVmZmVyIHNp
emUgcmVxdWlyZWQgdG8gcmVzb2x2ZSB0aGUgcGF0aC4KKyAgICBpbnQgY2Fub25pY2FsUGF0aExl
bjsKKyAgICBJRklMRU1HUl9SZXNvbHZlUGF0aChmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5k
YXRhKCksIDAsICZjYW5vbmljYWxQYXRoTGVuKTsKKworICAgIC8vIFJlc29sdmUgdGhlIHBhdGgg
dG8gdGhlIGNhbm9uaWNhbCBwYXRoLgorICAgIFZlY3RvcjxjaGFyPiBjYW5vbmljYWxQYXRoQnVm
ZmVyKGNhbm9uaWNhbFBhdGhMZW4pOworICAgIElGSUxFTUdSX1Jlc29sdmVQYXRoKGZpbGVNZ3Iu
Z2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSwgY2Fub25pY2FsUGF0aEJ1ZmZlci5kYXRhKCksICZj
YW5vbmljYWxQYXRoTGVuKTsKKworICAgIFN0cmluZyBjYW5vbmljYWxQYXRoKGNhbm9uaWNhbFBh
dGhCdWZmZXIuZGF0YSgpKTsKKworICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgJy8nLgorICAg
IGludCBsYXN0RGl2UG9zID0gY2Fub25pY2FsUGF0aC5yZXZlcnNlRmluZCgnLycpOworICAgIGlu
dCBlbmRQb3MgPSBjYW5vbmljYWxQYXRoLmxlbmd0aCgpOworICAgIGlmIChsYXN0RGl2UG9zID09
IGVuZFBvcyAtIDEpCisgICAgICAgIGNhbm9uaWNhbFBhdGggPSBjYW5vbmljYWxQYXRoLnN1YnN0
cmluZygwLCBjYW5vbmljYWxQYXRoLmxlbmd0aCgpIC0gMSk7CisKKyAgICByZXR1cm4gY2Fub25p
Y2FsUGF0aDsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcg
bG9uZyYgcmVzdWx0KQoreworICAgIE93blB0ckJyZXc8SUZpbGVNZ3I+IGZpbGVNZ3IoY3JlYXRl
SUZpbGVNZ3IoKSk7CisgICAgRmlsZUluZm8gaW5mbzsKKworICAgIGlmIChJRklMRU1HUl9HZXRJ
bmZvKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSwgJmluZm8pID09IFNVQ0NFU1Mp
IHsKKyAgICAgICAgcmVzdWx0ID0gaW5mby5kd1NpemU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gVGhlcmUgaXMgbm8gd2F5IHRvIGdl
dCBmaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGluIEJSRVcuCisvLyBJRklMRU1HUl9HZXRJbmZvRXgo
KSByZXR1cm5zIG9ubHkgZmlsZSBjcmVhdGlvbiB0aW1lLgorYm9vbCBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBPd25QdHJCcmV3PElGaWxlTWdyPiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAg
cmV0dXJuIChJRklMRU1HUl9UZXN0KGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSkg
PT0gU1VDQ0VTUyk7Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgT3duUHRyQnJldzxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmlsZU1ncigpKTsKKwor
ICAgIHJldHVybiAoSUZJTEVNR1JfUmVtb3ZlKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRh
dGEoKSkgPT0gU1VDQ0VTUyk7Cit9CisKK2Jvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIE93blB0ckJyZXc8SUZpbGVNZ3I+IGZpbGVNZ3IoY3JlYXRl
SUZpbGVNZ3IoKSk7CisKKyAgICByZXR1cm4gKElGSUxFTUdSX1JtRGlyKGZpbGVNZ3IuZ2V0KCks
IHBhdGgudXRmOCgpLmRhdGEoKSkgPT0gU1VDQ0VTUyk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVu
dCkKK3sKKyAgICBpZiAoY29tcG9uZW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHBhdGg7
CisKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IGJ1ZmZlcjsKKworICAgIGJ1ZmZlci5hcHBlbmQo
cGF0aC5jaGFyYWN0ZXJzKCksIHBhdGgubGVuZ3RoKCkpOworCisgICAgaWYgKGJ1ZmZlci5sYXN0
KCkgIT0gTCcvJyAmJiBjb21wb25lbnRbMF0gIT0gTCcvJykKKyAgICAgICAgYnVmZmVyLmFwcGVu
ZChMJy8nKTsKKworICAgIGJ1ZmZlci5hcHBlbmQoY29tcG9uZW50LmNoYXJhY3RlcnMoKSwgY29t
cG9uZW50Lmxlbmd0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYpCit7CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgYm9vbCBtYWtlQWxsRGly
ZWN0b3JpZXMoT3duUHRyQnJldzxJRmlsZU1ncj4mIGZpbGVNZ3IsIGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBpZiAocGF0aCA9PSBjYW5vbmljYWxQYXRoKEFFRUZTX0hPTUVfRElSKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpbnQgbGFzdERpdlBvcyA9IHBhdGgucmV2ZXJzZUZp
bmQoJy8nKTsKKyAgICBpbnQgZW5kUG9zID0gcGF0aC5sZW5ndGgoKTsKKyAgICBpZiAobGFzdERp
dlBvcyA9PSBwYXRoLmxlbmd0aCgpIC0gMSkgeworICAgICAgICBlbmRQb3MgLT0gMTsKKyAgICAg
ICAgbGFzdERpdlBvcyA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nLCBsYXN0RGl2UG9zKTsKKyAgICB9
CisKKyAgICBpZiAobGFzdERpdlBvcyA+IDApIHsKKyAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0
b3JpZXMoZmlsZU1nciwgcGF0aC5zdWJzdHJpbmcoMCwgbGFzdERpdlBvcykpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBmb2xkZXIocGF0aC5zdWJzdHJp
bmcoMCwgZW5kUG9zKSk7CisKKyAgICAvLyBJRklMRU1HUl9Na0RpciByZXR1cm4gU1VDQ0VTUyB3
aGVuIHRoZSBmaWxlIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIG9yIGlmIGZpbGUgYWxyZWFkeSBl
eGlzdHMuCisgICAgLy8gU28gd2UgbmVlZCB0byBjaGVjayBmaWxlaW5mby5hdHRyaWIuCisgICAg
SUZJTEVNR1JfTWtEaXIoZmlsZU1nci5nZXQoKSwgZm9sZGVyLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgRmlsZUluZm8gZmlsZUluZm87CisgICAgaWYgKElGSUxFTUdSX0dldEluZm8oZmlsZU1nci5n
ZXQoKSwgZm9sZGVyLnV0ZjgoKS5kYXRhKCksICZmaWxlSW5mbykgIT0gU1VDQ0VTUykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZpbGVJbmZvLmF0dHJpYiAmIF9GQV9ESVI7
Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBPd25QdHJCcmV3PElGaWxlTWdyPiBmaWxlTWdyKGNyZWF0ZUlGaWxlTWdyKCkpOworCisgICAg
cmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhmaWxlTWdyLCBjYW5vbmljYWxQYXRoKHBhdGgpKTsK
K30KKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKEFF
RUZTX0hPTUVfRElSKTsKK30KKworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8n
KSArIDEpOworfQorCitTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgU3RyaW5nIGZpbGVOYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmlu
ZyBkaXJOYW1lID0gU3RyaW5nKHBhdGgpOworICAgIGRpck5hbWUudHJ1bmNhdGUoZGlyTmFtZS5s
ZW5ndGgoKSAtIHBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGRp
ck5hbWU7Cit9CisKK0NTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICAvLyBCUkVXIGRvZXMgbm90IGhh
dmUgYSBzeXN0ZW0td2lkZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LAorICAgIC8vIHVzZSAiZnM6L34v
dG1wIiBhcyBvdXIgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICBTdHJpbmcgdGVtcFBhdGgoImZz
Oi9+L3RtcCIpOworCisgICAgT3duUHRyQnJldzxJRmlsZU1ncj4gZmlsZU1ncihjcmVhdGVJRmls
ZU1ncigpKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpZiBpdCBk
b2VzIG5vdCBleGlzdC4KKyAgICBJRklMRU1HUl9Na0RpcihmaWxlTWdyLmdldCgpLCB0ZW1wUGF0
aC51dGY4KCkuZGF0YSgpKTsKKworICAgIC8vIExvb3AgdW50aWwgd2UgZmluZCBhIHRlbXBvcmFy
eSBmaWxlbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgIGludCBudW1iZXIgPSBzdGF0aWNf
Y2FzdDxpbnQ+KFdURjo6cmFuZG9tTnVtYmVyKCkgKiAxMDAwMCk7CisgICAgQ1N0cmluZyBmaWxl
bmFtZTsKKyAgICBkbyB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQodGVtcFBhdGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOworICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6Om51bWJlcihudW1iZXIpKTsKKyAgICAgICAgZmlsZW5hbWUgPSBidWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpOworICAgICAgICBudW1iZXIrKzsKKyAgICB9IHdoaWxlIChJRklMRU1HUl9U
ZXN0KGZpbGVNZ3IuZ2V0KCksIGZpbGVuYW1lLmRhdGEoKSkgPT0gU1VDQ0VTUyk7CisKKyAgICBJ
RmlsZSogdGVtcEZpbGUgPSBJRklMRU1HUl9PcGVuRmlsZShmaWxlTWdyLmdldCgpLCBmaWxlbmFt
ZS5kYXRhKCksIF9PRk1fQ1JFQVRFKTsKKyAgICBpZiAodGVtcEZpbGUpIHsKKyAgICAgICAgaGFu
ZGxlID0gdGVtcEZpbGU7CisgICAgICAgIHJldHVybiBmaWxlbmFtZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gQ1N0cmluZygpOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIElG
SUxFX1JlbGVhc2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKKyAgICB9Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghaXNIYW5k
bGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpbnQgdG90YWxCeXRl
c1dyaXR0ZW4gPSAwOworICAgIHdoaWxlICh0b3RhbEJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkgewor
ICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gSUZJTEVfV3JpdGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGggLSB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQor
ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID4gMCkKKyAg
ICAgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKKyAgICB9CisKKyAg
ICByZXR1cm4gdG90YWxCeXRlc1dyaXR0ZW47Cit9CisKK2Jvb2wgdW5sb2FkTW9kdWxlKFBsYXRm
b3JtTW9kdWxlIG1vZHVsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1
c2VkIG9ubHkgYnkgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcy4K
KyAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Cit9
CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58214</attachid>
            <date>2010-06-08 23:25:49 -0700</date>
            <delta_ts>2010-06-14 20:37:41 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>FileSystem.patch</filename>
            <type>text/plain</type>
            <size>10423</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDg4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDYtMDggIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzIzCisKKyAgICAgICAgUG9ydCBGaWxlU3lzdGVtIHdpdGgg
SUZpbGVNZ3IgaW50ZXJmYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVFeGlzdHMpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbm9uaWNhbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmhvbWVEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjp1bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeSk6
CisKIDIwMTAtMDYtMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZp
c2lvbiA2MDg3OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw2ICs1OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBISU5TVEFOQ0VfXyogSElOU1RB
TkNFOwogdHlwZWRlZiBISU5TVEFOQ0UgSE1PRFVMRTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
QlJFV01QKQordHlwZWRlZiBzdHJ1Y3QgX0lGaWxlIElGaWxlOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogY2xhc3MgQ1N0cmluZzsKIH0KQEAgLTExNyw2ICsxMjEsMTEgQEAgdHlwZWRlZiBI
QU5ETEUgUGxhdGZvcm1GaWxlSGFuZGxlOwogLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExF
X1ZBTFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwogLy8gYXZv
aWQgdXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3ZlIHRo
aXMgaW50byB0aGUgLmNwcC4KIGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KC0xKTsKKyNlbGlmIFBMQVRG
T1JNKEJSRVdNUCkKK3R5cGVkZWYgSUZpbGUqIFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKK3R5cGVkZWYg
dm9pZCogUGxhdGZvcm1Nb2R1bGU7Cit0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3JtTW9kdWxlVmVy
c2lvbjsKICNlbHNlCiB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKworI2luY2x1ZGUgPEFF
RUFwcEdlbi5oPgorI2luY2x1ZGUgPEFFRUZpbGUuaD4KKyNpbmNsdWRlIDxBRUVTdGRMaWIuaD4K
KworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvYnJldy9TaGVsbEJy
ZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0KQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZUluc3RhbmNlPElG
aWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKKyAgICBGaWxlSW5mbyBpbmZvOworCisgICAgaWYg
KElGSUxFTUdSX0dldEluZm8oZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCkuZGF0YSgpLCAmaW5m
bykgPT0gU1VDQ0VTUykgeworICAgICAgICByZXN1bHQgPSBpbmZvLmR3U2l6ZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCit7
CisgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHRvIGdldCBmaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlu
IEJSRVcuIElGSUxFTUdSX0dldEluZm9FeCgpIHJldHVybnMKKyAgICAvLyBvbmx5IGZpbGUgY3Jl
YXRpb24gdGltZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgZmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRl
SW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOworCisgICAgcmV0dXJuIChJRklM
RU1HUl9UZXN0KGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSkgPT0gU1VDQ0VTUyk7
Cit9CisKK2Jvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRy
PElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlSW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJ
TEVNR1IpOworCisgICAgcmV0dXJuIChJRklMRU1HUl9SZW1vdmUoZmlsZU1nci5nZXQoKSwgcGF0
aC51dGY4KCkuZGF0YSgpKSA9PSBTVUNDRVNTKTsKK30KKworYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyPElGaWxlTWdyPiBmaWxlTWdy
ID0gY3JlYXRlSW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOworCisgICAgcmV0
dXJuIChJRklMRU1HUl9SbURpcihmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpID09
IFNVQ0NFU1MpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgaWYgKGNvbXBvbmVu
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBwYXRoOworCisgICAgVmVjdG9yPFVDaGFyLCAx
MDI0PiBidWZmZXI7CisKKyAgICBidWZmZXIuYXBwZW5kKHBhdGguY2hhcmFjdGVycygpLCBwYXRo
Lmxlbmd0aCgpKTsKKworICAgIGlmIChidWZmZXIubGFzdCgpICE9IEwnLycgJiYgY29tcG9uZW50
WzBdICE9IEwnLycpCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoTCcvJyk7CisKKyAgICBidWZmZXIu
YXBwZW5kKGNvbXBvbmVudC5jaGFyYWN0ZXJzKCksIGNvbXBvbmVudC5sZW5ndGgoKSk7CisKKyAg
ICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorCitDU3Ry
aW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
cmV0dXJuIHBhdGgudXRmKCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgY2Fub25pY2FsUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgT3duUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRl
SW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNMU0lEX0ZJTEVNR1IpOworCisgICAgLy8gR2V0IHRoZSBi
dWZmZXIgc2l6ZSByZXF1aXJlZCB0byByZXNvbHZlIHRoZSBwYXRoLgorICAgIGludCBjYW5vblBh
dGhMZW47CisgICAgSUZJTEVNR1JfUmVzb2x2ZVBhdGgoZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4
KCkuZGF0YSgpLCAwLCAmY2Fub25QYXRoTGVuKTsKKworICAgIC8vIFJlc29sdmUgdGhlIHBhdGgg
dG8gdGhlIGNhbm9uaWNhbCBwYXRoLgorICAgIFZlY3RvcjxjaGFyPiBjYW5vblBhdGhCdWZmZXIo
Y2Fub25QYXRoTGVuKTsKKyAgICBJRklMRU1HUl9SZXNvbHZlUGF0aChmaWxlTWdyLmdldCgpLCBw
YXRoLnV0ZjgoKS5kYXRhKCksIGNhbm9uUGF0aEJ1ZmZlci5kYXRhKCksICZjYW5vblBhdGhMZW4p
OworCisgICAgU3RyaW5nIGNhbm9uUGF0aChjYW5vblBhdGhCdWZmZXIuZGF0YSgpKTsKKworICAg
IC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgJy8nLgorICAgIGludCBsYXN0RGl2UG9zID0gY2Fub25Q
YXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAgaW50IGVuZFBvcyA9IGNhbm9uUGF0aC5sZW5ndGgo
KTsKKyAgICBpZiAobGFzdERpdlBvcyA9PSBlbmRQb3MgLSAxKQorICAgICAgICBjYW5vblBhdGgg
PSBjYW5vblBhdGguc3Vic3RyaW5nKDAsIGNhbm9uUGF0aC5sZW5ndGgoKSAtIDEpOworCisgICAg
cmV0dXJuIGNhbm9uUGF0aDsKK30KKworc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKFBh
c3NPd25QdHI8SUZpbGVNZ3I+IGZpbGVNZ3IsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBp
ZiAocGF0aCA9PSBjYW5vbmljYWxQYXRoKEFFRUZTX0hPTUVfRElSKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpbnQgbGFzdERpdlBvcyA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKKyAg
ICBpbnQgZW5kUG9zID0gcGF0aC5sZW5ndGgoKTsKKyAgICBpZiAobGFzdERpdlBvcyA9PSBwYXRo
Lmxlbmd0aCgpIC0gMSkgeworICAgICAgICBlbmRQb3MgLT0gMTsKKyAgICAgICAgbGFzdERpdlBv
cyA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nLCBsYXN0RGl2UG9zKTsKKyAgICB9CisKKyAgICBpZiAo
bGFzdERpdlBvcyA+IDApIHsKKyAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoZmlsZU1n
ci5yZWxlYXNlKCksIHBhdGguc3Vic3RyaW5nKDAsIGxhc3REaXZQb3MpKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTdHJpbmcgZm9sZGVyKHBhdGguc3Vic3RyaW5n
KDAsIGVuZFBvcykpOworCisgICAgLy8gSUZJTEVNR1JfTWtEaXIgcmV0dXJuIFNVQ0NFU1Mgd2hl
biB0aGUgZmlsZSBpcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBvciBpZiBmaWxlIGFscmVhZHkgZXhp
c3RzLgorICAgIC8vIFNvIHdlIG5lZWQgdG8gY2hlY2sgZmlsZWluZm8uYXR0cmliLgorICAgIElG
SUxFTUdSX01rRGlyKGZpbGVNZ3IuZ2V0KCksIGZvbGRlci51dGY4KCkuZGF0YSgpKTsKKworICAg
IEZpbGVJbmZvIGZpbGVJbmZvOworICAgIGlmIChJRklMRU1HUl9HZXRJbmZvKGZpbGVNZ3IuZ2V0
KCksIGZvbGRlci51dGY4KCkuZGF0YSgpLCAmZmlsZUluZm8pICE9IFNVQ0NFU1MpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBmaWxlSW5mby5hdHRyaWIgJiBfRkFfRElSOwor
fQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
T3duUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlSW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNM
U0lEX0ZJTEVNR1IpOworCisgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhmaWxlTWdyLnJl
bGVhc2UoKSwgY2Fub25pY2FsUGF0aChwYXRoKSk7Cit9CisKK1N0cmluZyBob21lRGlyZWN0b3J5
UGF0aCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhBRUVGU19IT01FX0RJUik7Cit9CisKK1N0cmlu
ZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBwYXRo
LnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKK30KKworU3RyaW5nIGRpcmVj
dG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlTmFtZSA9IHBh
dGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICBTdHJpbmcgZGlyTmFtZSA9IFN0cmluZyhwYXRoKTsK
KyAgICBkaXJOYW1lLnRydW5jYXRlKGRpck5hbWUubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUo
cGF0aCkubGVuZ3RoKCkpOworICAgIHJldHVybiBkaXJOYW1lOworfQorCitDU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCit7CisgICAgLy8gQlJFVyBkb2VzIG5vdCBoYXZlIGEgc3lzdGVtLXdpZGUgdGVtcG9yYXJ5
IGRpcmVjdG9yeSwKKyAgICAvLyB1c2UgImZzOi9+L3RtcCIgYXMgb3VyIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuCisgICAgU3RyaW5nIHRlbXBQYXRoKCJmczovfi90bXAiKTsKKworICAgIE93blB0cjxJ
RmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZUluc3RhbmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxF
TUdSKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpZiBpdCBkb2Vz
IG5vdCBleGlzdC4KKyAgICBJRklMRU1HUl9Na0RpcihmaWxlTWdyLmdldCgpLCB0ZW1wUGF0aC51
dGY4KCkuZGF0YSgpKTsKKworICAgIC8vIExvb3AgdW50aWwgd2UgZmluZCBhIHRlbXBvcmFyeSBm
aWxlbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0LgorICAgIGludCBudW1iZXIgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHJhbmRvbU51bWJlcigpICogMTAwMDApOworICAgIENTdHJpbmcgZmlsZW5hbWU7Cisg
ICAgZG8geworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHRlbXBQYXRoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQocHJlZml4KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIobnVtYmVyKSk7CisgICAgICAgIGZpbGVuYW1lID0gYnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKKyAgICAgICAgbnVtYmVyKys7CisgICAgfSB3aGlsZSAoSUZJTEVNR1JfVGVzdChmaWxl
TWdyLmdldCgpLCBmaWxlbmFtZS5kYXRhKCkpID09IFNVQ0NFU1MpOworCisgICAgSUZpbGUqIHRl
bXBGaWxlID0gSUZJTEVNR1JfT3BlbkZpbGUoZmlsZU1nci5nZXQoKSwgZmlsZW5hbWUuZGF0YSgp
LCBfT0ZNX0NSRUFURSk7CisgICAgaWYgKHRlbXBGaWxlKSB7CisgICAgICAgIGhhbmRsZSA9IHRl
bXBGaWxlOworICAgICAgICByZXR1cm4gZmlsZW5hbWU7CisgICAgfQorCisgICAgcmV0dXJuIENT
dHJpbmcoKTsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
Cit7CisgICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICBJRklMRV9SZWxl
YXNlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
CisgICAgfQorfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaW50IGJ5dGVzV3JpdHRlbiA9IElG
SUxFX1dyaXRlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoIWJ5dGVzV3JpdHRlbikK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBieXRlc1dyaXR0ZW47Cit9CisKK2Jvb2wg
dW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlIG1vZHVsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVj
dG9yPFN0cmluZz4gZW50cmllczsKKworICAgIC8vIE9LIHRvIG5vdCBpbXBsZW1lbnQgbGlzdERp
cmVjdG9yeSwgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZCBmb3IgcGx1Zy1pbnMgYW5kCisgICAgLy8g
QnJldyBNUCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBwbHVnLWluIGF0IHRoZSBtb21lbnQuCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiBlbnRyaWVzOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58747</attachid>
            <date>2010-06-14 20:37:41 -0700</date>
            <delta_ts>2010-06-23 19:55:53 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>FileSystem.patch</filename>
            <type>text/plain</type>
            <size>10431</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTE3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDYtMTQgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzIzCisKKyAgICAgICAgUG9ydCBGaWxlU3lzdGVtIHdpdGgg
SUZpbGVNZ3IgaW50ZXJmYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVFeGlzdHMpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbm9uaWNhbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmhvbWVEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjp1bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeSk6
CisKIDIwMTAtMDYtMTQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAkocmV2aXNpb24gNjExNzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkod29y
a2luZyBjb3B5KQpAQCAtNTksNiArNTksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgSElOU1RBTkNFX18q
IEhJTlNUQU5DRTsKIHR5cGVkZWYgSElOU1RBTkNFIEhNT0RVTEU7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEJSRVdNUCkKK3R5cGVkZWYgc3RydWN0IF9JRmlsZSBJRmlsZTsKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV1RGIHsKIGNsYXNzIENTdHJpbmc7CiB9CkBAIC0xMTcsNiArMTIxLDExIEBAIHR5
cGVkZWYgSEFORExFIFBsYXRmb3JtRmlsZUhhbmRsZTsKIC8vIEZJWE1FOiAtMSBpcyBJTlZBTElE
X0hBTkRMRV9WQUxVRSwgZGVmaW5lZCBpbiA8d2luYmFzZS5oPi4gQ2hyb21pdW0gdHJpZXMgdG8K
IC8vIGF2b2lkIHVzaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBoZWFkZXJzLiAgV2UnZCByYXRoZXIg
bW92ZSB0aGlzIGludG8gdGhlIC5jcHAuCiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPigtMSk7CisjZWxp
ZiBQTEFURk9STShCUkVXTVApCit0eXBlZGVmIElGaWxlKiBQbGF0Zm9ybUZpbGVIYW5kbGU7Citj
b25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7Cit0
eXBlZGVmIHZvaWQqIFBsYXRmb3JtTW9kdWxlOwordHlwZWRlZiB1bnNpZ25lZCBQbGF0Zm9ybU1v
ZHVsZVZlcnNpb247CiAjZWxzZQogdHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwogY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAw
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisKKyNpbmNs
dWRlIDxBRUVBcHBHZW4uaD4KKyNpbmNsdWRlIDxBRUVGaWxlLmg+CisjaW5jbHVkZSA8QUVFU3Rk
TGliLmg+CisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL2JyZXcv
U2hlbGxCcmV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxv
bmcmIHJlc3VsdCkKK3sKKyAgICBPd25QdHI8SUZpbGVNZ3I+IGZpbGVNZ3IgPSBjcmVhdGVJbnN0
YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURfRklMRU1HUik7CisgICAgRmlsZUluZm8gaW5mbzsKKwor
ICAgIGlmIChJRklMRU1HUl9HZXRJbmZvKGZpbGVNZ3IuZ2V0KCksIHBhdGgudXRmOCgpLmRhdGEo
KSwgJmluZm8pID09IFNVQ0NFU1MpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5mby5kd1NpemU7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVz
dWx0KQoreworICAgIC8vIFRoZXJlIGlzIG5vIHdheSB0byBnZXQgZmlsZSBtb2RpZmljYXRpb24g
dGltZSBpbiBCUkVXLiBJRklMRU1HUl9HZXRJbmZvRXgoKSByZXR1cm5zCisgICAgLy8gb25seSBm
aWxlIGNyZWF0aW9uIHRpbWUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIGZpbGVFeGlz
dHMoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIE93blB0cjxJRmlsZU1ncj4gZmlsZU1nciA9
IGNyZWF0ZUluc3RhbmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKKworICAgIHJldHVy
biAoSUZJTEVNR1JfVGVzdChmaWxlTWdyLmdldCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpID09IFNV
Q0NFU1MpOworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAg
IE93blB0cjxJRmlsZU1ncj4gZmlsZU1nciA9IGNyZWF0ZUluc3RhbmNlPElGaWxlTWdyPihBRUVD
TFNJRF9GSUxFTUdSKTsKKworICAgIHJldHVybiAoSUZJTEVNR1JfUmVtb3ZlKGZpbGVNZ3IuZ2V0
KCksIHBhdGgudXRmOCgpLmRhdGEoKSkgPT0gU1VDQ0VTUyk7Cit9CisKK2Jvb2wgZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIE93blB0cjxJRmlsZU1ncj4g
ZmlsZU1nciA9IGNyZWF0ZUluc3RhbmNlPElGaWxlTWdyPihBRUVDTFNJRF9GSUxFTUdSKTsKKwor
ICAgIHJldHVybiAoSUZJTEVNR1JfUm1EaXIoZmlsZU1nci5nZXQoKSwgcGF0aC51dGY4KCkuZGF0
YSgpKSA9PSBTVUNDRVNTKTsKK30KKworU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQoreworICAgIGlmIChj
b21wb25lbnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIFZlY3RvcjxV
Q2hhciwgMTAyND4gYnVmZmVyOworCisgICAgYnVmZmVyLmFwcGVuZChwYXRoLmNoYXJhY3RlcnMo
KSwgcGF0aC5sZW5ndGgoKSk7CisKKyAgICBpZiAoYnVmZmVyLmxhc3QoKSAhPSBMJy8nICYmIGNv
bXBvbmVudFswXSAhPSBMJy8nKQorICAgICAgICBidWZmZXIuYXBwZW5kKEwnLycpOworCisgICAg
YnVmZmVyLmFwcGVuZChjb21wb25lbnQuY2hhcmFjdGVycygpLCBjb21wb25lbnQubGVuZ3RoKCkp
OworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30K
KworQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKK30KKworc3RhdGljIFN0cmluZyBjYW5vbmljYWxQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBPd25QdHI8SUZpbGVNZ3I+IGZpbGVNZ3Ig
PSBjcmVhdGVJbnN0YW5jZTxJRmlsZU1ncj4oQUVFQ0xTSURfRklMRU1HUik7CisKKyAgICAvLyBH
ZXQgdGhlIGJ1ZmZlciBzaXplIHJlcXVpcmVkIHRvIHJlc29sdmUgdGhlIHBhdGguCisgICAgaW50
IGNhbm9uUGF0aExlbjsKKyAgICBJRklMRU1HUl9SZXNvbHZlUGF0aChmaWxlTWdyLmdldCgpLCBw
YXRoLnV0ZjgoKS5kYXRhKCksIDAsICZjYW5vblBhdGhMZW4pOworCisgICAgLy8gUmVzb2x2ZSB0
aGUgcGF0aCB0byB0aGUgY2Fub25pY2FsIHBhdGguCisgICAgVmVjdG9yPGNoYXI+IGNhbm9uUGF0
aEJ1ZmZlcihjYW5vblBhdGhMZW4pOworICAgIElGSUxFTUdSX1Jlc29sdmVQYXRoKGZpbGVNZ3Iu
Z2V0KCksIHBhdGgudXRmOCgpLmRhdGEoKSwgY2Fub25QYXRoQnVmZmVyLmRhdGEoKSwgJmNhbm9u
UGF0aExlbik7CisKKyAgICBTdHJpbmcgY2Fub25QYXRoKGNhbm9uUGF0aEJ1ZmZlci5kYXRhKCkp
OworCisgICAgLy8gUmVtb3ZlIHRoZSB0cmFpbGluZyAnLycuCisgICAgaW50IGxhc3REaXZQb3Mg
PSBjYW5vblBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKKyAgICBpbnQgZW5kUG9zID0gY2Fub25QYXRo
Lmxlbmd0aCgpOworICAgIGlmIChsYXN0RGl2UG9zID09IGVuZFBvcyAtIDEpCisgICAgICAgIGNh
bm9uUGF0aCA9IGNhbm9uUGF0aC5zdWJzdHJpbmcoMCwgY2Fub25QYXRoLmxlbmd0aCgpIC0gMSk7
CisKKyAgICByZXR1cm4gY2Fub25QYXRoOworfQorCitzdGF0aWMgYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoUGFzc093blB0cjxJRmlsZU1ncj4gZmlsZU1nciwgY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmIChwYXRoID09IGNhbm9uaWNhbFBhdGgoQUVFRlNfSE9NRV9ESVIpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGludCBsYXN0RGl2UG9zID0gcGF0aC5yZXZlcnNlRmluZCgn
LycpOworICAgIGludCBlbmRQb3MgPSBwYXRoLmxlbmd0aCgpOworICAgIGlmIChsYXN0RGl2UG9z
ID09IHBhdGgubGVuZ3RoKCkgLSAxKSB7CisgICAgICAgIGVuZFBvcyAtPSAxOworICAgICAgICBs
YXN0RGl2UG9zID0gcGF0aC5yZXZlcnNlRmluZCgnLycsIGxhc3REaXZQb3MpOworICAgIH0KKwor
ICAgIGlmIChsYXN0RGl2UG9zID4gMCkgeworICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmll
cyhmaWxlTWdyLnJlbGVhc2UoKSwgcGF0aC5zdWJzdHJpbmcoMCwgbGFzdERpdlBvcykpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBmb2xkZXIocGF0aC5z
dWJzdHJpbmcoMCwgZW5kUG9zKSk7CisKKyAgICAvLyBJRklMRU1HUl9Na0RpciByZXR1cm4gU1VD
Q0VTUyB3aGVuIHRoZSBmaWxlIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIG9yIGlmIGZpbGUgYWxy
ZWFkeSBleGlzdHMuCisgICAgLy8gU28gd2UgbmVlZCB0byBjaGVjayBmaWxlaW5mby5hdHRyaWIu
CisgICAgSUZJTEVNR1JfTWtEaXIoZmlsZU1nci5nZXQoKSwgZm9sZGVyLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgRmlsZUluZm8gZmlsZUluZm87CisgICAgaWYgKElGSUxFTUdSX0dldEluZm8oZmls
ZU1nci5nZXQoKSwgZm9sZGVyLnV0ZjgoKS5kYXRhKCksICZmaWxlSW5mbykgIT0gU1VDQ0VTUykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZpbGVJbmZvLmF0dHJpYiAmIF9G
QV9ESVI7Cit9CisKK2Jvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBPd25QdHI8SUZpbGVNZ3I+IGZpbGVNZ3IgPSBjcmVhdGVJbnN0YW5jZTxJRmlsZU1n
cj4oQUVFQ0xTSURfRklMRU1HUik7CisKKyAgICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKGZp
bGVNZ3IucmVsZWFzZSgpLCBjYW5vbmljYWxQYXRoKHBhdGgpKTsKK30KKworU3RyaW5nIGhvbWVE
aXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKEFFRUZTX0hPTUVfRElSKTsKK30K
KworU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0
dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworfQorCitTdHJp
bmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgU3RyaW5nIGZpbGVO
YW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBkaXJOYW1lID0gU3RyaW5n
KHBhdGgpOworICAgIGRpck5hbWUudHJ1bmNhdGUoZGlyTmFtZS5sZW5ndGgoKSAtIHBhdGhHZXRG
aWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGRpck5hbWU7Cit9CisKK0NTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciogcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKK3sKKyAgICAvLyBCUkVXIGRvZXMgbm90IGhhdmUgYSBzeXN0ZW0td2lkZSB0
ZW1wb3JhcnkgZGlyZWN0b3J5LAorICAgIC8vIHVzZSAiZnM6L34vdG1wIiBhcyBvdXIgdGVtcG9y
YXJ5IGRpcmVjdG9yeS4KKyAgICBTdHJpbmcgdGVtcFBhdGgoImZzOi9+L3RtcCIpOworCisgICAg
T3duUHRyPElGaWxlTWdyPiBmaWxlTWdyID0gY3JlYXRlSW5zdGFuY2U8SUZpbGVNZ3I+KEFFRUNM
U0lEX0ZJTEVNR1IpOworCisgICAgLy8gQ3JlYXRlIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlm
IGl0IGRvZXMgbm90IGV4aXN0LgorICAgIElGSUxFTUdSX01rRGlyKGZpbGVNZ3IuZ2V0KCksIHRl
bXBQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gTG9vcCB1bnRpbCB3ZSBmaW5kIGEgdGVt
cG9yYXJ5IGZpbGVuYW1lIHRoYXQgZG9lcyBub3QgZXhpc3QuCisgICAgaW50IG51bWJlciA9IHN0
YXRpY19jYXN0PGludD4ocmFuZG9tTnVtYmVyKCkgKiAxMDAwMCk7CisgICAgQ1N0cmluZyBmaWxl
bmFtZTsKKyAgICBkbyB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQodGVtcFBhdGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOworICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6Om51bWJlcihudW1iZXIpKTsKKyAgICAgICAgZmlsZW5hbWUgPSBidWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpOworICAgICAgICBudW1iZXIrKzsKKyAgICB9IHdoaWxlIChJRklMRU1HUl9U
ZXN0KGZpbGVNZ3IuZ2V0KCksIGZpbGVuYW1lLmRhdGEoKSkgPT0gU1VDQ0VTUyk7CisKKyAgICBJ
RmlsZSogdGVtcEZpbGUgPSBJRklMRU1HUl9PcGVuRmlsZShmaWxlTWdyLmdldCgpLCBmaWxlbmFt
ZS5kYXRhKCksIF9PRk1fQ1JFQVRFKTsKKyAgICBpZiAodGVtcEZpbGUpIHsKKyAgICAgICAgaGFu
ZGxlID0gdGVtcEZpbGU7CisgICAgICAgIHJldHVybiBmaWxlbmFtZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gQ1N0cmluZygpOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAgICAgIElG
SUxFX1JlbGVhc2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKKyAgICB9Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghaXNIYW5k
bGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpbnQgYnl0ZXNXcml0
dGVuID0gSUZJTEVfV3JpdGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgIGlmICghYnl0ZXNX
cml0dGVuKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKK30K
KworYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworCisgICAgLy8gT0sgdG8gbm90IGltcGxlbWVu
dCBsaXN0RGlyZWN0b3J5LCBiZWNhdXNlIGl0J3Mgb25seSB1c2VkIGZvciBwbHVnLWlucyBhbmQK
KyAgICAvLyBCcmV3IE1QIGRvZXMgbm90IHN1cHBvcnQgdGhlIHBsdWctaW4gYXQgdGhlIG1vbWVu
dC4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>