<?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>23256</bug_id>
          
          <creation_ts>2009-01-12 11:22:39 -0800</creation_ts>
          <short_desc>Implement application cache foreign entries</short_desc>
          <delta_ts>2009-01-13 23:18:08 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105344</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-12 11:22:39 -0800</bug_when>
    <thetext>Foreign entries are necessary to guarantee that an HTML file with manifest attribute will be associated with an appropriate cache, not a random cache that has this resource. Whenever it is detected that an HTML file in a cache should be associated with a different cache, the entry is marked as foreign, and will no longer be used for loading a main resource.

Currently, they are basically unimplemented, although there are bits of related logic in code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105348</commentid>
    <comment_count>1</comment_count>
      <attachid>26637</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-12 11:47:40 -0800</bug_when>
    <thetext>Created attachment 26637
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105349</commentid>
    <comment_count>2</comment_count>
      <attachid>26638</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-12 11:51:07 -0800</bug_when>
    <thetext>Created attachment 26638
proposed patch

Forgot to save ChangeLog before making the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105556</commentid>
    <comment_count>3</comment_count>
      <attachid>26638</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2009-01-13 12:56:09 -0800</bug_when>
    <thetext>Comment on attachment 26638
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105641</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-13 23:18:08 -0800</bug_when>
    <thetext>Committed revision 39884.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26637</attachid>
            <date>2009-01-12 11:47:40 -0800</date>
            <delta_ts>2009-01-12 11:51:07 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ForeignResources.txt</filename>
            <type>text/plain</type>
            <size>15092</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTgyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDEtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2UuaHRtbAorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1NgorICAg
ICAgICBJbXBsZW1lbnQgYXBwbGljYXRpb24gY2FjaGUgZm9yZWlnbiBlbnRyaWVzCisKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OnNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZv
clVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVV
cGRhdGVkVHlwZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmg6CisKIDIwMDktMDEtMTIgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsMTEgKzg3NSw2IEBAIGJvb2wgRG9j
dW1lbnRMb2FkZXI6OnNob3VsZExvYWRSZXNvdXJjZUYKICAgICAvLyBpbiB0aGUgYXBwbGljYXRp
b24gY2FjaGUsIHRoZW4gZ2V0IHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZSAoaW5zdGVhZCBv
ZiBmZXRjaGluZyBpdCkuCiAgICAgcmVzb3VyY2UgPSBjYWNoZS0+cmVzb3VyY2VGb3JVUkwocmVx
dWVzdC51cmwoKSk7CiAKLSAgICAvLyBEb24ndCBsb2FkIGZvcmVpZ24gcmVzb3VyY2VzLgotICAg
IC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBub3QgYmUgaGVyZS4gRm9yZWlnbiByZXNvdXJj
ZXMgYXJlIG9ubHkgdG8gYmUgaWdub3JlZCB3aGVuIG5hdmlnYXRpbmcsIG5vdCBkdXJpbmcgb3Ro
ZXIga2luZHMgb2YgbG9hZHMuCi0gICAgaWYgKHJlc291cmNlICYmIChyZXNvdXJjZS0+dHlwZSgp
ICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGb3JlaWduKSkKLSAgICAgICAgcmVzb3VyY2Ug
PSAwOwotCiAgICAgLy8gUmVzb3VyY2VzIHRoYXQgbWF0Y2ggZmFsbGJhY2sgbmFtZXNwYWNlcyBv
ciBvbmxpbmUgd2hpdGVsaXN0IGVudHJpZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgbmV0d29yaywK
ICAgICAvLyB1bmxlc3MgdGhleSBhcmUgYWxzbyBjYWNoZWQuCiAgICAgaWYgKCFyZXNvdXJjZSAm
JiAoY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpKSB8fCBj
YWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgpKSkpCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJl
dmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDkgKzEyNiwxNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoCiAgICAgICAgICAgICBtYWluUmVzb3VyY2VD
YWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoZG9jdW1lbnRM
b2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlKTsKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hl
LT5ncm91cCgpLT51cGRhdGUoZnJhbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSByZXNvdXJjZSBiZWluZyBsb2FkZWQgd2FzIGxvYWRlZCBmcm9tIGFu
IGFwcGxpY2F0aW9uIGNhY2hlIGFuZCB0aGUgVVJJIG9mIAotICAgICAgICAgICAgLy8gdGhhdCBh
cHBsaWNhdGlvbiBjYWNoZSdzIG1hbmlmZXN0IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbWFuaWZl
c3QgVVJJIHdpdGggd2hpY2ggdGhlIGFsZ29yaXRobSB3YXMgaW52b2tlZAotICAgICAgICAgICAg
Ly8gdGhlbiB3ZSBzaG91bGQgInVuZG8iIHRoZSBuYXZpZ2F0aW9uLgorICAgICAgICAgICAgLy8g
VGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIGNhY2hlLCBzbyB0aGUgY2FjaGUgbXVz
dCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBpdCBhcyBmb3JlaWduLgorICAgICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IG1haW5SZXNvdXJjZUNhY2hlLT5y
ZXNvdXJjZUZvclVSTChkb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgYm9vbCBp
blN0b3JhZ2UgPSByZXNvdXJjZS0+c3RvcmFnZUlEKCk7CisgICAgICAgICAgICByZXNvdXJjZS0+
YWRkVHlwZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZvcmVpZ24pOworICAgICAgICAgICAg
aWYgKGluU3RvcmFnZSkKKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5zdG9yZVVwZGF0
ZWRUeXBlKHJlc291cmNlLCBtYWluUmVzb3VyY2VDYWNoZSk7CisKKyAgICAgICAgICAgIC8vIFJl
c3RhcnQgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIG5hdmlnYXRp
b24gYWxnb3JpdGhtLCB1bmRvaW5nIGFueSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlCisgICAgICAg
ICAgICAvLyBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGxvYWQuCisgICAgICAgICAgICAvLyBUaGUg
bmF2aWdhdGlvbiB3aWxsIG5vdCByZXN1bHQgaW4gdGhlIHNhbWUgcmVzb3VyY2UgYmVpbmcgbG9h
ZGVkLCBiZWNhdXNlICJmb3JlaWduIiBlbnRyaWVzIGFyZSBuZXZlciBwaWNrZWQgZHVyaW5nIG5h
dmlnYXRpb24uCisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVyKCktPnJlZmVycmVyKCks
IHRydWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5j
cHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjCiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIAoteyAKLSAgICBBU1NFUlQo
IW1fc3RvcmFnZUlEKTsKK3sKKyAgICAvLyBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBzdG9y
aW5nIHRoZSBuZXcgdHlwZSBpbiBkYXRhYmFzZS4KICAgICBtX3R5cGUgfD0gdHlwZTsgCiB9CiAK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTcz
LDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHdoaWxl
ICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAg
IEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAor
ICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVF
cXVhbCh1cmwsIG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xODEs
NyArMTg0LDEwIEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAg
ICAgICAgdW5zaWduZWQgbmV3ZXN0Q2FjaGVJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0
ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMikpOwogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAKLSAgICAgICAgaWYgKCFjYWNo
ZS0+cmVzb3VyY2VGb3JVUkwodXJsKSkKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSA9IGNhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgICAgICBpZiAoIXJl
c291cmNlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXNvdXJjZS0+dHlw
ZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGb3JlaWduKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAobWFuaWZlc3RVUkwpOwpAQCAtMTg5LDcgKzE5NSw2IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICAgICAgZ3JvdXAtPnNldFN0
b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDAp
KSk7CiAgICAgICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwogICAg
ICAgICAKLSAgICAgICAgQVNTRVJUKCFtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0
VVJMKSk7CiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgp
LCBncm91cCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZ3JvdXA7CkBAIC0yMzAsNiArMjM1
LDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHdoaWxl
ICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAg
IEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAor
ICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAvLyBGYWxsYmFjayBuYW1lc3BhY2VzIGFsd2F5
cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyBtYW5pZmVzdCBVUkwsIHNvIHdlIGNhbiBhdm9pZCBs
b2FkaW5nIGNhY2hlcyB0aGF0IGNhbm5vdCBtYXRjaC4KICAgICAgICAgaWYgKCFwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwodXJsLCBtYW5pZmVzdFVSTCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTI1MCw3ICsyNTgsNiBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgICAgICBncm91cC0+c2V0TmV3ZXN0
Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVCghbV9jYWNo
ZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpOwogICAgICAgICBtX2NhY2hlc0luTWVt
b3J5LnNldChncm91cC0+bWFuaWZlc3RVUkwoKSwgZ3JvdXApOwogICAgICAgICAKICAgICAgICAg
cmV0dXJuIGdyb3VwOwpAQCAtNTMxLDYgKzUzOCwyNSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzdG9yZShBcHBsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCit7CisgICAgQVNTRVJUKGNhY2hl
LT5zdG9yYWdlSUQoKSk7CisgICAgQVNTRVJUKHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CisKKyAg
ICAvLyBGSVhNRTogSWYgdGhlIHJlc291cmNlIGdhaW5lZCBhIER5bmFtaWMgYml0LCBpdCBzaG91
bGQgYmUgcmUtaW5zZXJ0ZWQgYXQgdGhlIGVuZCBmb3IgY29ycmVjdCBvcmRlci4KKyAgICBBU1NF
UlQoIShyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWlj
KSk7CisgICAgCisgICAgLy8gRmlyc3QsIGluc2VydCB0aGUgZGF0YQorICAgIFNRTGl0ZVN0YXRl
bWVudCBlbnRyeVN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIENhY2hlRW50cmllcyBTRVQg
dHlwZT0/IFdIRVJFIHJlc291cmNlPT8iKTsKKyAgICBpZiAoZW50cnlTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBlbnRyeVN0
YXRlbWVudC5iaW5kSW50NjQoMSwgcmVzb3VyY2UtPnR5cGUoKSk7CisgICAgZW50cnlTdGF0ZW1l
bnQuYmluZEludDY0KDIsIHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CisKKyAgICByZXR1cm4gZXhl
Y3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudCk7Cit9CisKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIEFwcGxp
Y2F0aW9uQ2FjaGUqIGNhY2hlKQogewogICAgIEFTU0VSVChjYWNoZS0+c3RvcmFnZUlEKCkpOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCShyZXZpc2lvbiAzOTgxNSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVi
bGljOgogICAgICAgICAKICAgICBib29sIHN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRpb25DYWNo
ZUdyb3VwKik7CiAgICAgdm9pZCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqLCBBcHBs
aWNhdGlvbkNhY2hlKik7CisgICAgYm9vbCBzdG9yZVVwZGF0ZWRUeXBlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSosIEFwcGxpY2F0aW9uQ2FjaGUqKTsKIAogICAgIHZvaWQgcmVtb3ZlKEFwcGxp
Y2F0aW9uQ2FjaGUqKTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5ODI5KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDEt
MTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI1NgorICAgICAgICBJbXBsZW1lbnQgYXBwbGljYXRpb24gY2Fj
aGUgZm9yZWlnbiBlbnRyaWVzCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291
cmNlcy94aHItZm9yZWlnbi1yZXNvdXJjZS0yLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJjZS1mcmFtZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHIt
Zm9yZWlnbi1yZXNvdXJjZS5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS94aHItZm9yZWlnbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2UuaHRtbDogQWRkZWQu
CisKIDIwMDktMDEtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUveGhyLWZvcmVpZ24tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK1Rlc3QgdGhhdCBhIHJlc291cmNlIG1hcmtlZCBhcyBmb3JlaWduIGNhbiBzdGls
bCBiZSBsb2FkZWQgdmlhIFhIUi4KKworU2hvdWxkIHNheSBTVUNDRVNTOgorCitTVUNDRVNTCisK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUveGhy
LWZvcmVpZ24tcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUt
dHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3hoci1m
b3JlaWduLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzkgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3Vy
Y2UubWFuaWZlc3QiPgorPGJvZHk+Cis8cD5UZXN0IHRoYXQgYSByZXNvdXJjZSBtYXJrZWQgYXMg
Zm9yZWlnbiBjYW4gc3RpbGwgYmUgbG9hZGVkIHZpYSBYSFIuPC9wPgorPHA+U2hvdWxkIHNheSBT
VUNDRVNTOjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworZnVuY3Rpb24gY3Jl
YXRlRnJhbWUxKCkKK3sKKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlv
bigpIHsgbG9nKCJGQUlMOiBVbmV4cGVjdGVkIG5vdXBkYXRlIGV2ZW50IikgfQorICAgIGFwcGxp
Y2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgbG9nKCJGQUlMOiBVbmV4cGVjdGVk
IGNhY2hlZCBldmVudCIpIH0KKyAgICAKKyAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgaWZyLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy94
aHItZm9yZWlnbi1yZXNvdXJjZS1mcmFtZS5odG1sIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnIpOworfQorCitmdW5jdGlvbiBjcmVhdGVGcmFtZTIoKQoreworICAgIC8vIEEg
Y29weSB0aGF0IGRvZXNuJ3QgaGF2ZSBpdHMgbWFpbiByZXNvdXJjZSBpbiBjYWNoZSBtYW5pZmVz
dC4KKyAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAg
aWZyLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJjZS1m
cmFtZS5odG1sPyIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsKK30KKwor
YXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IGNyZWF0ZUZyYW1lMSgp
IH0KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgY3JlYXRlRnJhbWUx
KCkgfQorCithcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgbG9n
KCJGQUlMOiByZWNlaXZlZCB1bmV4cGVjdGVkIHVwZGF0ZXJlYWR5IGV2ZW50IikgfQorYXBwbGlj
YXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGxvZygiRkFJTDogcmVjZWl2ZWQgdW5l
eHBlY3RlZCBlcnJvciBldmVudCIpIH0KKwordmFyIGhhZEVycm9yRnJvbVN1YmZyYW1lID0gZmFs
c2U7Cit2YXIgc3ViZnJhbWVNZXNzYWdlc1JlY2VpdmVkID0gMDsKK2Z1bmN0aW9uIGZyYW1lTWVz
c2FnZVJlY2VpdmVkKGV2dCkKK3sKKyAgICArK3N1YmZyYW1lTWVzc2FnZXNSZWNlaXZlZDsKKyAg
ICBpZiAoZXZ0LmRhdGEgIT0gIlNVQ0NFU1MiKQorICAgICAgICBoYWRFcnJvckZyb21TdWJmcmFt
ZSA9IHRydWU7CisgICAgaWYgKHN1YmZyYW1lTWVzc2FnZXNSZWNlaXZlZCA9PSAxKQorICAgICAg
ICBzZXRUaW1lb3V0KGNyZWF0ZUZyYW1lMiwgMCk7CisgICAgZWxzZSBpZiAoc3ViZnJhbWVNZXNz
YWdlc1JlY2VpdmVkID09IDIpCisgICAgICAgIHRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdChl
dnQpCit7CisgICAgaWYgKCFoYWRFcnJvckZyb21TdWJmcmFtZSkgeworICAgICAgICAvLyBUaGUg
c3ViZnJhbWUgaGFzIGEgZGlmZmVyZW50IGNhY2hlLCBidXQgaXQgaXMgYWxzbyBsaXN0ZWQgYXMg
YSByZXNvdXJjZSBpbiBtYWluIGZyYW1lJ3MKKyAgICAgICAgLy8gbWFuaWZlc3QsIHNvIGl0IHNo
b3VsZCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGRlc3BpdGUgYmVpbmcgbWFya2VkIGFzIGZvcmVp
Z24gbm93LgorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKKyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3hoci1mb3Jl
aWduLXJlc291cmNlLWZyYW1lLmh0bWwiLCBmYWxzZSk7CisgICAgICAgICAgICByZXEuc2VuZCgi
Iik7CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsK
KyAgICAgICAgICAgIGxvZyAoZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIAorICAgICAgICBs
b2coIkZBSUw6IHN1YmZyYW1lIGRpZG4ndCBnZXQgYSBjb3JyZWN0IGNhY2hlIik7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgZnJhbWVNZXNzYWdlUmVjZWl2ZWQsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3hoci1mb3JlaWduLXJlc291cmNlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10
eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtMi5tYW5pZmVzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWlnbi1y
ZXNvdXJjZS0yLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtMi5tYW5pZmVzdAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSBAQAorQ0FDSEUgTUFOSUZFU1QKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJlc291cmNlLWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJlc291
cmNlLWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sIG1hbmlm
ZXN0PSJ4aHItZm9yZWlnbi1yZXNvdXJjZS0yLm1hbmlmZXN0Ij4KKzxib2R5PgorPGRpdiBpZD1y
ZXN1bHQ+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxi
cj4iOworfQorCitmdW5jdGlvbiBjYWNoZWQoKQoreworICAgIGFwcGxpY2F0aW9uQ2FjaGUub25u
b3VwZGF0ZSA9IG51bGw7CisgICAgYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IG51bGw7Cisg
ICAgCisgICAgLy8gc2ltcGxlLnR4dCBpcyBvbmx5IGxpc3RlZCBzIGEgcmVzb3VyY2UgaW4gbWFp
biBmcmFtZSdzIG1hbmlmZXN0LCBzbyBsb2FkaW5nIHNob3VsZCBmYWlsLgorICAgIHRyeSB7Cisg
ICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVuKCJH
RVQiLCAic2ltcGxlLnR4dCIsIGZhbHNlKTsKKyAgICAgICAgcmVxLnNlbmQoIiIpOworICAgICAg
ICBsb2coIkZBSUwiKTsKKyAgICAgICAgbG9nKCJhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyA9ICIg
KyBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyk7CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgi
RkFJTCIsICIqIik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGcmFtZSBPSyIp
OworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoIlNVQ0NFU1MiLCAiKiIpOworICAgIH0KK30K
KworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gY2FjaGVkOworYXBwbGljYXRpb25DYWNo
ZS5vbmNhY2hlZCA9IGNhY2hlZDsKKworYXBwbGljYXRpb25DYWNoZS5vbnVwZGF0ZXJlYWR5ID0g
ZnVuY3Rpb24oKSB7IGxvZygiRkFJTDogcmVjZWl2ZWQgdW5leHBlY3RlZCB1cGRhdGVyZWFkeSBl
dmVudCIpIH0KK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBsb2coIkZB
SUw6IHJlY2VpdmVkIHVuZXhwZWN0ZWQgZXJyb3IgZXZlbnQiKSB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJlc291cmNlLWZyYW1lLmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UubWFu
aWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJj
ZS5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDQUNIRSBNQU5JRkVTVAor
eGhyLWZvcmVpZ24tcmVzb3VyY2UtZnJhbWUuaHRtbAorc2ltcGxlLnR4dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26638</attachid>
            <date>2009-01-12 11:51:07 -0800</date>
            <delta_ts>2009-01-13 12:56:09 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ForeignResources.txt</filename>
            <type>text/plain</type>
            <size>15665</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTgyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDEtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2UuaHRtbAorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1NgorICAg
ICAgICBJbXBsZW1lbnQgYXBwbGljYXRpb24gY2FjaGUgZm9yZWlnbiBlbnRyaWVzCisKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOiAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgUmVtb3Zl
ZCBhIG1pc3BsYWNlZCBjaGVjayBmb3IgZm9yZWlnbiByZXNvdXJjZXMgdGhhdCBwcmV2ZW50ZWQg
dGhlbSBmcm9tIGJlaW5nIGxvYWRlZCBhbHRvZ2V0aGVyLgorCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgSWYgYSBkb2N1bWVudCB0aGF0IHdhcyBs
b2FkZWQgZnJvbSBhcHBjYWNoZSBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgZGlmZmVyZW50
IGNhY2hlLAorICAgICAgICBtYXJrIHRoZSByZXNvdXJjZSBhcyBmb3JlaWduIGluIHRoZSBvcmln
aW5hbCBjYWNoZSBhbmQgc3RhcnQgb3Zlci4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOiAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjphZGRUeXBlKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gbm93IGJlIGNhbGxl
ZCBhZnRlciBhIGNhY2hlIGlzIHN0b3JlZCwgc28gaXQgbm8gbG9uZ2VyIGFzc2VydHMgdGhlIG9w
cG9zaXRlLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNo
ZUdyb3VwRm9yVVJMKTogRml4IGRhdGFiYXNlIHBhc3MgdG8gY29ycmVjdGx5IGlnbm9yZQorICAg
ICAgICBpbi1tZW1vcnkgY2FjaGVzIHRoYXQgd2VyZSBhbHJlYWR5IHJlamVjdGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZv
clVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlVXBkYXRlZFR5cGUpOiBBZGRlZCBhIGZ1bmN0aW9uIHRoYXQgdXBkYXRlcyB0eXBlIG9m
CisgICAgICAgIGFuIGFscmVhZHkgc3RvcmVkIGNhY2hlZCByZXNvdXJjZS4KKworICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOiBBZGRlZCBzdG9yZVVw
ZGF0ZWRUeXBlKCkuCisKIDIwMDktMDEtMTIgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsMTEgKzg3NSw2IEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6OnNob3VsZExvYWRSZXNvdXJjZUYKICAgICAvLyBpbiB0aGUgYXBwbGlj
YXRpb24gY2FjaGUsIHRoZW4gZ2V0IHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZSAoaW5zdGVh
ZCBvZiBmZXRjaGluZyBpdCkuCiAgICAgcmVzb3VyY2UgPSBjYWNoZS0+cmVzb3VyY2VGb3JVUkwo
cmVxdWVzdC51cmwoKSk7CiAKLSAgICAvLyBEb24ndCBsb2FkIGZvcmVpZ24gcmVzb3VyY2VzLgot
ICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBub3QgYmUgaGVyZS4gRm9yZWlnbiByZXNv
dXJjZXMgYXJlIG9ubHkgdG8gYmUgaWdub3JlZCB3aGVuIG5hdmlnYXRpbmcsIG5vdCBkdXJpbmcg
b3RoZXIga2luZHMgb2YgbG9hZHMuCi0gICAgaWYgKHJlc291cmNlICYmIChyZXNvdXJjZS0+dHlw
ZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGb3JlaWduKSkKLSAgICAgICAgcmVzb3Vy
Y2UgPSAwOwotCiAgICAgLy8gUmVzb3VyY2VzIHRoYXQgbWF0Y2ggZmFsbGJhY2sgbmFtZXNwYWNl
cyBvciBvbmxpbmUgd2hpdGVsaXN0IGVudHJpZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgbmV0d29y
aywKICAgICAvLyB1bmxlc3MgdGhleSBhcmUgYWxzbyBjYWNoZWQuCiAgICAgaWYgKCFyZXNvdXJj
ZSAmJiAoY2FjaGUtPnVybE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpKSB8
fCBjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgpKSkpCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJ
KHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDkgKzEyNiwxNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoCiAgICAgICAgICAgICBtYWluUmVzb3Vy
Y2VDYWNoZS0+Z3JvdXAoKS0+YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoZG9jdW1l
bnRMb2FkZXIsIG1haW5SZXNvdXJjZUNhY2hlKTsKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUNh
Y2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSByZXNvdXJjZSBiZWluZyBsb2FkZWQgd2FzIGxvYWRlZCBmcm9t
IGFuIGFwcGxpY2F0aW9uIGNhY2hlIGFuZCB0aGUgVVJJIG9mIAotICAgICAgICAgICAgLy8gdGhh
dCBhcHBsaWNhdGlvbiBjYWNoZSdzIG1hbmlmZXN0IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbWFu
aWZlc3QgVVJJIHdpdGggd2hpY2ggdGhlIGFsZ29yaXRobSB3YXMgaW52b2tlZAotICAgICAgICAg
ICAgLy8gdGhlbiB3ZSBzaG91bGQgInVuZG8iIHRoZSBuYXZpZ2F0aW9uLgorICAgICAgICAgICAg
Ly8gVGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIGNhY2hlLCBzbyB0aGUgY2FjaGUg
bXVzdCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBpdCBhcyBmb3JlaWduLgorICAgICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IG1haW5SZXNvdXJjZUNhY2hl
LT5yZXNvdXJjZUZvclVSTChkb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgYm9v
bCBpblN0b3JhZ2UgPSByZXNvdXJjZS0+c3RvcmFnZUlEKCk7CisgICAgICAgICAgICByZXNvdXJj
ZS0+YWRkVHlwZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZvcmVpZ24pOworICAgICAgICAg
ICAgaWYgKGluU3RvcmFnZSkKKyAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5zdG9yZVVw
ZGF0ZWRUeXBlKHJlc291cmNlLCBtYWluUmVzb3VyY2VDYWNoZSk7CisKKyAgICAgICAgICAgIC8v
IFJlc3RhcnQgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIG5hdmln
YXRpb24gYWxnb3JpdGhtLCB1bmRvaW5nIGFueSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlCisgICAg
ICAgICAgICAvLyBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGxvYWQuCisgICAgICAgICAgICAvLyBU
aGUgbmF2aWdhdGlvbiB3aWxsIG5vdCByZXN1bHQgaW4gdGhlIHNhbWUgcmVzb3VyY2UgYmVpbmcg
bG9hZGVkLCBiZWNhdXNlICJmb3JlaWduIiBlbnRyaWVzIGFyZSBuZXZlciBwaWNrZWQgZHVyaW5n
IG5hdmlnYXRpb24uCisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRp
b25DaGFuZ2UoZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVyKCktPnJlZmVycmVy
KCksIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjCiB9CiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIAoteyAKLSAgICBBU1NF
UlQoIW1fc3RvcmFnZUlEKTsKK3sKKyAgICAvLyBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBz
dG9yaW5nIHRoZSBuZXcgdHlwZSBpbiBkYXRhYmFzZS4KICAgICBtX3R5cGUgfD0gdHlwZTsgCiB9
CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDM5ODE1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiAr
MTczLDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHdo
aWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAg
ICAgIEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsK
IAorICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbCh1cmwsIG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0x
ODEsNyArMTg0LDEwIEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMK
ICAgICAgICAgdW5zaWduZWQgbmV3ZXN0Q2FjaGVJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMikpOwogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25D
YWNoZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVJRCk7CiAKLSAgICAgICAgaWYgKCFj
YWNoZS0+cmVzb3VyY2VGb3JVUkwodXJsKSkKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiByZXNvdXJjZSA9IGNhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgICAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXNvdXJjZS0+
dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGb3JlaWduKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAobWFuaWZlc3RVUkwpOwpAQCAtMTg5LDcgKzE5NSw2IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKICAgICAgICAgZ3JvdXAtPnNl
dFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0
KDApKSk7CiAgICAgICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwog
ICAgICAgICAKLSAgICAgICAgQVNTRVJUKCFtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlm
ZXN0VVJMKSk7CiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVS
TCgpLCBncm91cCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZ3JvdXA7CkBAIC0yMzAsNiAr
MjM1LDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIHdo
aWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAg
ICAgIEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsK
IAorICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAvLyBGYWxsYmFjayBuYW1lc3BhY2VzIGFs
d2F5cyBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyBtYW5pZmVzdCBVUkwsIHNvIHdlIGNhbiBhdm9p
ZCBsb2FkaW5nIGNhY2hlcyB0aGF0IGNhbm5vdCBtYXRjaC4KICAgICAgICAgaWYgKCFwcm90b2Nv
bEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBtYW5pZmVzdFVSTCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI1MCw3ICsyNTgsNiBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0
aW9uQ2FjaGVTCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgICAgICBncm91cC0+c2V0TmV3
ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVCghbV9j
YWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpOwogICAgICAgICBtX2NhY2hlc0lu
TWVtb3J5LnNldChncm91cC0+bWFuaWZlc3RVUkwoKSwgZ3JvdXApOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIGdyb3VwOwpAQCAtNTMxLDYgKzUzOCwyNSBAQCBib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpzdG9yZShBcHBsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiByZXNvdXJjZSwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCit7CisgICAgQVNTRVJUKGNh
Y2hlLT5zdG9yYWdlSUQoKSk7CisgICAgQVNTRVJUKHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CisK
KyAgICAvLyBGSVhNRTogSWYgdGhlIHJlc291cmNlIGdhaW5lZCBhIER5bmFtaWMgYml0LCBpdCBz
aG91bGQgYmUgcmUtaW5zZXJ0ZWQgYXQgdGhlIGVuZCBmb3IgY29ycmVjdCBvcmRlci4KKyAgICBB
U1NFUlQoIShyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpEeW5h
bWljKSk7CisgICAgCisgICAgLy8gRmlyc3QsIGluc2VydCB0aGUgZGF0YQorICAgIFNRTGl0ZVN0
YXRlbWVudCBlbnRyeVN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIENhY2hlRW50cmllcyBT
RVQgdHlwZT0/IFdIRVJFIHJlc291cmNlPT8iKTsKKyAgICBpZiAoZW50cnlTdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBlbnRy
eVN0YXRlbWVudC5iaW5kSW50NjQoMSwgcmVzb3VyY2UtPnR5cGUoKSk7CisgICAgZW50cnlTdGF0
ZW1lbnQuYmluZEludDY0KDIsIHJlc291cmNlLT5zdG9yYWdlSUQoKSk7CisKKyAgICByZXR1cm4g
ZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudCk7Cit9CisKIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIEFw
cGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQogewogICAgIEFTU0VSVChjYWNoZS0+c3RvcmFnZUlEKCkp
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCShyZXZpc2lvbiAzOTgxNSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICAKICAgICBib29sIHN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRpb25D
YWNoZUdyb3VwKik7CiAgICAgdm9pZCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqLCBB
cHBsaWNhdGlvbkNhY2hlKik7CisgICAgYm9vbCBzdG9yZVVwZGF0ZWRUeXBlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSosIEFwcGxpY2F0aW9uQ2FjaGUqKTsKIAogICAgIHZvaWQgcmVtb3ZlKEFw
cGxpY2F0aW9uQ2FjaGUqKTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5ODI5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDkt
MDEtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1NgorICAgICAgICBJbXBsZW1lbnQgYXBwbGljYXRpb24g
Y2FjaGUgZm9yZWlnbiBlbnRyaWVzCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJjZS0yLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJjZS1mcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94
aHItZm9yZWlnbi1yZXNvdXJjZS5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHBjYWNoZS94aHItZm9yZWlnbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2UuaHRtbDogQWRk
ZWQuCisKIDIwMDktMDEtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUveGhyLWZvcmVpZ24tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYgQEAKK1Rlc3QgdGhhdCBhIHJlc291cmNlIG1hcmtlZCBhcyBmb3JlaWduIGNhbiBz
dGlsbCBiZSBsb2FkZWQgdmlhIFhIUi4KKworU2hvdWxkIHNheSBTVUNDRVNTOgorCitTVUNDRVNT
CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
eGhyLWZvcmVpZ24tcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1p
bWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUveGhyLWZvcmVpZ24tcmVzb3Vy
Y2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3ho
ci1mb3JlaWduLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzkgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVz
b3VyY2UubWFuaWZlc3QiPgorPGJvZHk+Cis8cD5UZXN0IHRoYXQgYSByZXNvdXJjZSBtYXJrZWQg
YXMgZm9yZWlnbiBjYW4gc3RpbGwgYmUgbG9hZGVkIHZpYSBYSFIuPC9wPgorPHA+U2hvdWxkIHNh
eSBTVUNDRVNTOjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworZnVuY3Rpb24g
Y3JlYXRlRnJhbWUxKCkKK3sKKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5j
dGlvbigpIHsgbG9nKCJGQUlMOiBVbmV4cGVjdGVkIG5vdXBkYXRlIGV2ZW50IikgfQorICAgIGFw
cGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgbG9nKCJGQUlMOiBVbmV4cGVj
dGVkIGNhY2hlZCBldmVudCIpIH0KKyAgICAKKyAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNl
cy94aHItZm9yZWlnbi1yZXNvdXJjZS1mcmFtZS5odG1sIik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnIpOworfQorCitmdW5jdGlvbiBjcmVhdGVGcmFtZTIoKQoreworICAgIC8v
IEEgY29weSB0aGF0IGRvZXNuJ3QgaGF2ZSBpdHMgbWFpbiByZXNvdXJjZSBpbiBjYWNoZSBtYW5p
ZmVzdC4KKyAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Cisg
ICAgaWZyLnNldEF0dHJpYnV0ZSgic3JjIiwgInJlc291cmNlcy94aHItZm9yZWlnbi1yZXNvdXJj
ZS1mcmFtZS5odG1sPyIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsKK30K
KworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IGNyZWF0ZUZyYW1l
MSgpIH0KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgY3JlYXRlRnJh
bWUxKCkgfQorCithcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRlcmVhZHkgPSBmdW5jdGlvbigpIHsg
bG9nKCJGQUlMOiByZWNlaXZlZCB1bmV4cGVjdGVkIHVwZGF0ZXJlYWR5IGV2ZW50IikgfQorYXBw
bGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGxvZygiRkFJTDogcmVjZWl2ZWQg
dW5leHBlY3RlZCBlcnJvciBldmVudCIpIH0KKwordmFyIGhhZEVycm9yRnJvbVN1YmZyYW1lID0g
ZmFsc2U7Cit2YXIgc3ViZnJhbWVNZXNzYWdlc1JlY2VpdmVkID0gMDsKK2Z1bmN0aW9uIGZyYW1l
TWVzc2FnZVJlY2VpdmVkKGV2dCkKK3sKKyAgICArK3N1YmZyYW1lTWVzc2FnZXNSZWNlaXZlZDsK
KyAgICBpZiAoZXZ0LmRhdGEgIT0gIlNVQ0NFU1MiKQorICAgICAgICBoYWRFcnJvckZyb21TdWJm
cmFtZSA9IHRydWU7CisgICAgaWYgKHN1YmZyYW1lTWVzc2FnZXNSZWNlaXZlZCA9PSAxKQorICAg
ICAgICBzZXRUaW1lb3V0KGNyZWF0ZUZyYW1lMiwgMCk7CisgICAgZWxzZSBpZiAoc3ViZnJhbWVN
ZXNzYWdlc1JlY2VpdmVkID09IDIpCisgICAgICAgIHRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVz
dChldnQpCit7CisgICAgaWYgKCFoYWRFcnJvckZyb21TdWJmcmFtZSkgeworICAgICAgICAvLyBU
aGUgc3ViZnJhbWUgaGFzIGEgZGlmZmVyZW50IGNhY2hlLCBidXQgaXQgaXMgYWxzbyBsaXN0ZWQg
YXMgYSByZXNvdXJjZSBpbiBtYWluIGZyYW1lJ3MKKyAgICAgICAgLy8gbWFuaWZlc3QsIHNvIGl0
IHNob3VsZCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGRlc3BpdGUgYmVpbmcgbWFya2VkIGFzIGZv
cmVpZ24gbm93LgorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxI
dHRwUmVxdWVzdDsKKyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3hoci1m
b3JlaWduLXJlc291cmNlLWZyYW1lLmh0bWwiLCBmYWxzZSk7CisgICAgICAgICAgICByZXEuc2Vu
ZCgiIik7CisgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgfSBjYXRjaCAoZXgp
IHsKKyAgICAgICAgICAgIGxvZyAoZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIAorICAgICAg
ICBsb2coIkZBSUw6IHN1YmZyYW1lIGRpZG4ndCBnZXQgYSBjb3JyZWN0IGNhY2hlIik7CisKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZnJhbWVNZXNzYWdlUmVjZWl2ZWQsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3hoci1mb3JlaWduLXJlc291cmNlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWlt
ZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtMi5tYW5pZmVzdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWln
bi1yZXNvdXJjZS0yLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtMi5tYW5pZmVzdAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorQ0FDSEUgTUFOSUZFU1QKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJlc291cmNlLWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UtZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJl
c291cmNlLWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sIG1h
bmlmZXN0PSJ4aHItZm9yZWlnbi1yZXNvdXJjZS0yLm1hbmlmZXN0Ij4KKzxib2R5PgorPGRpdiBp
ZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsg
Ijxicj4iOworfQorCitmdW5jdGlvbiBjYWNoZWQoKQoreworICAgIGFwcGxpY2F0aW9uQ2FjaGUu
b25ub3VwZGF0ZSA9IG51bGw7CisgICAgYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IG51bGw7
CisgICAgCisgICAgLy8gc2ltcGxlLnR4dCBpcyBvbmx5IGxpc3RlZCBzIGEgcmVzb3VyY2UgaW4g
bWFpbiBmcmFtZSdzIG1hbmlmZXN0LCBzbyBsb2FkaW5nIHNob3VsZCBmYWlsLgorICAgIHRyeSB7
CisgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVu
KCJHRVQiLCAic2ltcGxlLnR4dCIsIGZhbHNlKTsKKyAgICAgICAgcmVxLnNlbmQoIiIpOworICAg
ICAgICBsb2coIkZBSUwiKTsKKyAgICAgICAgbG9nKCJhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyA9
ICIgKyBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyk7CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2Fn
ZSgiRkFJTCIsICIqIik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJGcmFtZSBP
SyIpOworICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoIlNVQ0NFU1MiLCAiKiIpOworICAgIH0K
K30KKworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gY2FjaGVkOworYXBwbGljYXRpb25D
YWNoZS5vbmNhY2hlZCA9IGNhY2hlZDsKKworYXBwbGljYXRpb25DYWNoZS5vbnVwZGF0ZXJlYWR5
ID0gZnVuY3Rpb24oKSB7IGxvZygiRkFJTDogcmVjZWl2ZWQgdW5leHBlY3RlZCB1cGRhdGVyZWFk
eSBldmVudCIpIH0KK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBsb2co
IkZBSUw6IHJlY2VpdmVkIHVuZXhwZWN0ZWQgZXJyb3IgZXZlbnQiKSB9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL3hoci1mb3JlaWduLXJlc291cmNlLWZyYW1lLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2Uu
bWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMveGhyLWZvcmVpZ24tcmVzb3VyY2UubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy94aHItZm9yZWlnbi1yZXNv
dXJjZS5tYW5pZmVzdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDQUNIRSBNQU5JRkVT
VAoreGhyLWZvcmVpZ24tcmVzb3VyY2UtZnJhbWUuaHRtbAorc2ltcGxlLnR4dAo=
</data>
<flag name="review"
          id="12675"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>