<?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>69885</bug_id>
          
          <creation_ts>2011-10-11 17:15:43 -0700</creation_ts>
          <short_desc>Support passing optional filename when FormData.append() is used to append a blob</short_desc>
          <delta_ts>2011-10-12 10:45:05 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>482063</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-10-11 17:15:43 -0700</bug_when>
    <thetext>We need to support passing optional filename when FormData.append() is used to append a blob, per the latest XHR 2 spec:
  http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#dom-formdata-append

When the append(name, value, filename) method is invoked, the user agent must create a new entry with the following parameters set and append it to the end of the collection the FormData object represents:

Set its name to name.
Set its value to value.
Set its type to &quot;text&quot; if value is a string and &quot;file&quot; if it is a Blob.
If its type is &quot;file&quot; set its filename to &quot;blob&quot;.
If its type is &quot;file&quot; and value is a File whose name attribute is not the empty string, set entry&apos;s filename to the attribute&apos;s value.
If the filename parameter is not omitted set entry&apos;s filename to filename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482069</commentid>
    <comment_count>1</comment_count>
      <attachid>110614</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-10-11 17:20:55 -0700</bug_when>
    <thetext>Created attachment 110614
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482071</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 17:24:06 -0700</bug_when>
    <thetext>Attachment 110614 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482077</commentid>
    <comment_count>3</comment_count>
      <attachid>110616</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-10-11 17:26:35 -0700</bug_when>
    <thetext>Created attachment 110616
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482454</commentid>
    <comment_count>4</comment_count>
      <attachid>110616</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-12 09:28:31 -0700</bug_when>
    <thetext>Comment on attachment 110616
Proposed Patch

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

Please consider adding that test.

&gt; Source/WebCore/bindings/v8/custom/V8DOMFormDataCustom.cpp:78
&gt; +            filename = toWebCoreStringWithNullCheck(args[2]);

It would be nice to add a test with null as the last arg. It looks like you added handling throughout the code for this but it seems untested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482511</commentid>
    <comment_count>5</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-10-12 10:45:05 -0700</bug_when>
    <thetext>New test case added to cover null argument case.

Committed as http://trac.webkit.org/changeset/97274.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110614</attachid>
            <date>2011-10-11 17:20:55 -0700</date>
            <delta_ts>2011-10-11 17:26:35 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>69885</filename>
            <type>text/plain</type>
            <size>14942</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZWIxMzBjLi42YjhhOTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAt
MTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgcGFz
c2luZyBvcHRpb25hbCBmaWxlbmFtZSB3aGVuIEZvcm1EYXRhLmFwcGVuZCgpIGlzIHVzZWQgdG8K
KyAgICAgICAgYXBwZW5kIGEgYmxvYgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJjZXMvc2Vu
ZC1mb3JtLWRhdGEtY29tbW9uLmpzOgorICAgICAgICAoZHVtcFJlc3BvbnNlKToKKyAgICAgICAg
KHNlbmRGb3JtRGF0YSk6CisgICAgICAgICh0ZXN0U2VuZGluZ0Zvcm1EYXRhKToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3NjcmlwdC10ZXN0cy9zZW5kLWZvcm0tZGF0YS13
aXRoLXNsaWNlZC1maWxlLmpzOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogaHR0cC90
ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLWV4cGVj
dGVkLnR4dDoKKwogMjAxMS0xMC0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBNYWMgcmViYXNlbGluZSBhZnRlciByOTY2MTAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3Jlc291cmNlcy9zZW5kLWZvcm0tZGF0
YS1jb21tb24uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3Jlc291
cmNlcy9zZW5kLWZvcm0tZGF0YS1jb21tb24uanMKaW5kZXggNjA0NzNlYS4uZDJhM2U3ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJjZXMv
c2VuZC1mb3JtLWRhdGEtY29tbW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvZm9ybWRhdGEvcmVzb3VyY2VzL3NlbmQtZm9ybS1kYXRhLWNvbW1vbi5qcwpAQCAtMjEsMjEg
KzIxLDE4IEBAIGZ1bmN0aW9uIGdldEZpbGVOYW1lKGZpbGVQYXRoKQogCiBmdW5jdGlvbiBkdW1w
UmVzcG9uc2UoeGhyLCBmaWxlU2xpY2VkKQogewotICAgIHZhciByZXNwb25zZVRleHQgPSB4aHIu
cmVzcG9uc2VUZXh0OwotCi0gICAgLy8gSWYgd2UncmUgc2VuZGluZyBhIHNsaWNlZCBmaWxlIGFt
b25nIHRoZSBGb3JtRGF0YSwgYSB1bmlxdWVseSBnZW5lcmF0ZWQgbmFtZSBwcmVmaXhlZCB3aXRo
ICJCbG9iIiBpcyB1c2VkLgotICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSByYW5kb20gcGFy
dCBpbiB0aGUgZmlsZW5hbWUgc28gdGhhdCB3ZSBnZXQgY29uc2lzdGVudCByZXN1bHQuCi0gICAg
aWYgKGZpbGVTbGljZWQpCi0gICAgICAgIHJlc3BvbnNlVGV4dCA9IHJlc3BvbnNlVGV4dC5yZXBs
YWNlKC9CbG9iXHd7MzJ9L2csICJCbG9iIik7Ci0KLSAgICBkZWJ1ZyhyZXNwb25zZVRleHQpOwor
ICAgIGRlYnVnKHhoci5yZXNwb25zZVRleHQpOwogfQogCiBmdW5jdGlvbiBzZW5kRm9ybURhdGEo
Zm9ybURhdGFMaXN0LCBmaWxlU2xpY2VkLCBzZW5kQXNBc3luYywgYWRkRXZlbnRIYW5kbGVycykK
IHsKICAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGZvcm1EYXRhTGlzdC5sZW5ndGg7IGkrKykKLSAgICAgICAgZm9ybURhdGEuYXBwZW5k
KGZvcm1EYXRhTGlzdFtpXVsnbmFtZSddLCBmb3JtRGF0YUxpc3RbaV1bJ3ZhbHVlJ10pOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybURhdGFMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGlmIChmb3JtRGF0YUxpc3RbaV1bJ2ZpbGVuYW1lJ10pCisgICAgICAgICAgICBmb3JtRGF0YS5h
cHBlbmQoZm9ybURhdGFMaXN0W2ldWyduYW1lJ10sIGZvcm1EYXRhTGlzdFtpXVsndmFsdWUnXSwg
Zm9ybURhdGFMaXN0W2ldWydmaWxlbmFtZSddKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Zm9ybURhdGEuYXBwZW5kKGZvcm1EYXRhTGlzdFtpXVsnbmFtZSddLCBmb3JtRGF0YUxpc3RbaV1b
J3ZhbHVlJ10pOworICAgIH0KIAogICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
ICAgICBpZiAoYWRkRXZlbnRIYW5kbGVycykKQEAgLTc1LDcgKzcyLDcgQEAgZnVuY3Rpb24gdGVz
dFNlbmRpbmdGb3JtRGF0YShkYXRhTGlzdCwgc2VuZEFzQXN5bmMsIGFkZEV2ZW50SGFuZGxlcnMp
CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2xpY2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGUgPSBmaWxlLndlYmtpdFNsaWNlKGRhdGFMaXN0W2ldWydzdGFydCdd
LCBkYXRhTGlzdFtpXVsnc3RhcnQnXSArIGRhdGFMaXN0W2ldWydsZW5ndGgnXSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9ybURhdGFMaXN0LnB1c2goeydu
YW1lJzogZGF0YUxpc3RbaV1bJ25hbWUnXSwgJ3ZhbHVlJzogZmlsZX0pOworICAgICAgICAgICAg
ICAgICAgICBmb3JtRGF0YUxpc3QucHVzaCh7J25hbWUnOiBkYXRhTGlzdFtpXVsnbmFtZSddLCAn
dmFsdWUnOiBmaWxlLCAnZmlsZW5hbWUnOiBkYXRhTGlzdFtpXVsnZmlsZW5hbWUnXX0pOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3Njcmlw
dC10ZXN0cy9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zY3JpcHQtdGVzdHMvc2VuZC1mb3JtLWRhdGEtd2l0
aC1zbGljZWQtZmlsZS5qcwppbmRleCBiZjc5YzhiLi5kODIwYTI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3NjcmlwdC10ZXN0cy9zZW5kLWZvcm0t
ZGF0YS13aXRoLXNsaWNlZC1maWxlLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvZm9ybWRhdGEvc2NyaXB0LXRlc3RzL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUu
anMKQEAgLTksMjEgKzksMjcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKICAgICBkZWJ1ZygiU2Vu
ZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzbGljZWQgZmlsZToiKTsKICAgICB0ZXN0U2Vu
ZGluZ0Zvcm1EYXRhKFsKLSAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnZmlsZScs
ICd2YWx1ZSc6ICcuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFy
dCcgOiAxLCAnbGVuZ3RoJyA6IDUgfQorICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6
ICdmaWxlJywgJ3ZhbHVlJzogJy4uL3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0
JywgJ3N0YXJ0JzogMSwgJ2xlbmd0aCc6IDUgfQorICAgIF0pOworCisgICAgZGVidWcoIlNlbmRp
bmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgY29tcGxldGUgZmlsZSBhbmQgb25lIHNsaWNlZCBm
aWxlIHdpdGggb3B0aW9uYWwgZmlsZW5hbWVzOiIpOworICAgIHRlc3RTZW5kaW5nRm9ybURhdGEo
WworICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMScsICd2YWx1ZSc6ICcu
Li9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdmaWxlbmFtZSc6ICdmaWxl
bmFtZTEnIH0sCisgICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUyJywgJ3Zh
bHVlJzogJy4uL3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JywgJ3N0YXJ0Jzog
MywgJ2xlbmd0aCc6IDIsICdmaWxlbmFtZSc6ICdmaWxlbmFtZTInIH0KICAgICBdKTsKIAogICAg
IGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIHN0cmluZyBhbmQgb25lIHNs
aWNlZCBmaWxlOiIpOwogICAgIHRlc3RTZW5kaW5nRm9ybURhdGEoWwogICAgICAgICB7ICd0eXBl
JzogJ3N0cmluZycsICduYW1lJzogJ3N0cmluZzEnLCAndmFsdWUnOiAnZm9vJyB9LAotICAgICAg
ICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMScsICd2YWx1ZSc6ICcuLi9yZXNvdXJj
ZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFydCcgOiAxLCAnbGVuZ3RoJyA6IDUg
fQorICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMScsICd2YWx1ZSc6ICcu
Li9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFydCc6IDEsICdsZW5n
dGgnOiA1IH0KICAgICBdKTsKIAogICAgIGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5p
bmcgdHdvIHN0cmluZ3MgYW5kIHR3byBzbGljZWQgZmlsZXM6Iik7CiAgICAgdGVzdFNlbmRpbmdG
b3JtRGF0YShbCiAgICAgICAgIHsgJ3R5cGUnOiAnc3RyaW5nJywgJ25hbWUnOiAnc3RyaW5nMScs
ICd2YWx1ZSc6ICdmb28nIH0sCi0gICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2Zp
bGUxJywgJ3ZhbHVlJzogJy4uL3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0Jywg
J3N0YXJ0JyA6IDEsICdsZW5ndGgnIDogNSB9LAorICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAn
bmFtZSc6ICdmaWxlMScsICd2YWx1ZSc6ICcuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1z
ZW5kLnR4dCcsICdzdGFydCc6IDEsICdsZW5ndGgnOiA1IH0sCiAgICAgICAgIHsgJ3R5cGUnOiAn
c3RyaW5nJywgJ25hbWUnOiAnc3RyaW5nMicsICd2YWx1ZSc6ICdiYXInIH0sCi0gICAgICAgIHsg
J3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUyJywgJ3ZhbHVlJzogJy4uL3Jlc291cmNlcy9m
aWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JywgJ3N0YXJ0JyA6IDMsICdsZW5ndGgnIDogMiB9Cisg
ICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUyJywgJ3ZhbHVlJzogJy4uL3Jl
c291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JywgJ3N0YXJ0JzogMywgJ2xlbmd0aCc6
IDIgfQogICAgIF0pOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13
aXRoLXNsaWNlZC1maWxlLWV4cGVjdGVkLnR4dAppbmRleCAxZjdjNTBkLi44MmFkNzc5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1k
YXRhLXdpdGgtc2xpY2VkLWZpbGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3JtLWRhdGEtd2l0aC1zbGljZWQtZmlsZS1leHBl
Y3RlZC50eHQKQEAgLTYsMTEgKzYsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFNlbmRp
bmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgc2xpY2VkIGZpbGUgd2l0aCBlbXB0eSBuYW1lOgog
CiBTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIHNsaWNlZCBmaWxlOgotZmlsZT1CbG9i
OmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbToyMzQ1NgorZmlsZT1ibG9iOmFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbToyMzQ1NgorU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBjb21wbGV0
ZSBmaWxlIGFuZCBvbmUgc2xpY2VkIGZpbGUgd2l0aCBvcHRpb25hbCBmaWxlbmFtZXM6CitmaWxl
MT1maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0OnRleHQvcGxhaW46MTIzNDU2Nzg5MCZmaWxlMj1m
aWxlbmFtZTI6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOjQ1CiBTZW5kaW5nIEZvcm1EYXRhIGNv
bnRhaW5pbmcgb25lIHN0cmluZyBhbmQgb25lIHNsaWNlZCBmaWxlOgotc3RyaW5nMT1mb28mZmls
ZTE9QmxvYjphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW06MjM0NTYKK3N0cmluZzE9Zm9vJmZpbGUx
PWJsb2I6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOjIzNDU2CiBTZW5kaW5nIEZvcm1EYXRhIGNv
bnRhaW5pbmcgdHdvIHN0cmluZ3MgYW5kIHR3byBzbGljZWQgZmlsZXM6Ci1zdHJpbmcxPWZvbyZz
dHJpbmcyPWJhciZmaWxlMT1CbG9iOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbToyMzQ1NiZmaWxl
Mj1CbG9iOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTo0NQorc3RyaW5nMT1mb28mc3RyaW5nMj1i
YXImZmlsZTE9YmxvYjphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW06MjM0NTYmZmlsZTI9YmxvYjph
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW06NDUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU1NjYzM2EuLmM2OTU1M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0xMC0xMSAgSmlhbiBMaSAgPGppYW5saUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBwYXNzaW5nIG9wdGlvbmFsIGZpbGVuYW1lIHdo
ZW4gRm9ybURhdGEuYXBwZW5kKCkgaXMgdXNlZCB0bworICAgICAgICBhcHBlbmQgYSBibG9iCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg4NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdCB3aXRoIG5ldyB0ZXN0IGNhc2UgYWRkZWQ6CisgICAgICAgIGh0dHAvdGVz
dHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3JtLWRhdGEtd2l0aC1zbGljZWQtZmlsZS5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NRm9ybURhdGE6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01G
b3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvRE9NRm9ybURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRm9ybURhdGE6OmFwcGVuZCk6CisgICAgICAgICogaHRt
bC9ET01Gb3JtRGF0YS5oOgorICAgICAgICAqIGh0bWwvRE9NRm9ybURhdGEuaWRsOgorICAgICAg
ICAqIGh0bWwvRm9ybURhdGFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhTGlz
dDo6YXBwZW5kQmxvYik6CisgICAgICAgICogaHRtbC9Gb3JtRGF0YUxpc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhTGlzdDo6SXRlbTo6SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YUxpc3Q6Okl0ZW06OmZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
TGlzdDo6YXBwZW5kQmxvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMp
OgorCiAyMDExLTEwLTExICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgsIHVuYnJlYWtpbmcgdGhlIFF0IG1p
bmltYWwgYm90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01G
b3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1E
YXRhQ3VzdG9tLmNwcAppbmRleCAyNTU5ZTk2Li4zMTg2MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNjIsOSArNjIs
MTIgQEAgSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBTdHJpbmcgbmFtZSA9
IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CiAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICAgICAgaWYgKHZhbHVl
LmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCi0gICAgICAgICAgICBpbXBsKCktPmFwcGVuZChu
YW1lLCB0b0Jsb2IodmFsdWUpKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAodmFsdWUuaW5o
ZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkgeworICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzICYmICFleGVjLT5hcmd1
bWVudCgyKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0g
dXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAg
ICAgICAgIGltcGwoKS0+YXBwZW5kKG5hbWUsIHRvQmxvYih2YWx1ZSksIGZpbGVuYW1lKTsKKyAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB1c3RyaW5nVG9T
dHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApp
bmRleCA0NjY0Y2NiLi45NDQzM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBAIC03Miw3ICs3Miwx
MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgIEJs
b2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgIEFTU0VSVChibG9i
KTsKLSAgICAgICAgZG9tRm9ybURhdGEtPmFwcGVuZChuYW1lLCBibG9iKTsKKworICAgICAgICBT
dHJpbmcgZmlsZW5hbWU7CisgICAgICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDMgJiYgIWFyZ3Nb
Ml0tPklzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBmaWxlbmFtZSA9IHRvV2ViQ29yZVN0cmlu
Z1dpdGhOdWxsQ2hlY2soYXJnc1syXSk7CisKKyAgICAgICAgZG9tRm9ybURhdGEtPmFwcGVuZChu
YW1lLCBibG9iLCBmaWxlbmFtZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRvbUZvcm1EYXRhLT5h
cHBlbmQobmFtZSwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmcpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcAppbmRleCBiZDIwMTU1Li5hOGE5NzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcApAQCAtNjMsMTAgKzYzLDEwIEBAIHZvaWQgRE9NRm9ybURh
dGE6OmFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIGFwcGVuZERhdGEobmFtZSwgdmFsdWUpOwogfQogCi12b2lkIERPTUZvcm1EYXRhOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iKiBibG9iKQordm9pZCBET01Gb3JtRGF0YTo6YXBw
ZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKIHsKICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmRCbG9iKG5hbWUs
IGJsb2IpOworICAgICAgICBhcHBlbmRCbG9iKG5hbWUsIGJsb2IsIGZpbGVuYW1lKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5oCmluZGV4IDk2
N2Q2NGQuLjg0MmU2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZvcm1EYXRhPiBjcmVhdGUo
Y29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZv
cm1EYXRhKGVuY29kaW5nKSk7IH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBu
YW1lLCBCbG9iKik7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iKiwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01Gb3JtRGF0YShjb25zdCBUZXh0RW5jb2RpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01G
b3JtRGF0YS5pZGwKaW5kZXggMTI1ZWM4ZS4uYzgzODUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01G
b3JtRGF0YS5pZGwKQEAgLTM2LDkgKzM2LDExIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgR2Vu
ZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIEdlbmVyYXRlVG9KUwogICAgIF0gRE9NRm9y
bURhdGEgewotICAgICAgICAvLyB2b2lkIGFwcGVuZChET01TdHJpbmcgbmFtZSwgQmxvYiB2YWx1
ZSk7CisgICAgICAgIC8vIHZvaWQgYXBwZW5kKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFs
dWUpOworICAgICAgICAvLyB2b2lkIGFwcGVuZChET01TdHJpbmcgbmFtZSwgQmxvYiB2YWx1ZSwg
b3B0aW9uYWwgRE9NU3RyaW5nIGZpbGVuYW1lKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBhcHBl
bmQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgbmFtZSwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gRE9NU3RyaW5nIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
RE9NU3RyaW5nIGZpbGVuYW1lKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1EYXRhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1EYXRh
TGlzdC5jcHAKaW5kZXggNDUwM2ZkMi4uMDQwYzM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybURh
dGFMaXN0LmNwcApAQCAtNDEsOSArNDEsOSBAQCB2b2lkIEZvcm1EYXRhTGlzdDo6YXBwZW5kU3Ry
aW5nKGNvbnN0IENTdHJpbmcmIHMpCiAgICAgbV9pdGVtcy5hcHBlbmQocyk7CiB9CiAKLXZvaWQg
Rm9ybURhdGFMaXN0OjphcHBlbmRCbG9iKFBhc3NSZWZQdHI8QmxvYj4gYmxvYikKK3ZvaWQgRm9y
bURhdGFMaXN0OjphcHBlbmRCbG9iKFBhc3NSZWZQdHI8QmxvYj4gYmxvYiwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSkKIHsKLSAgICBtX2l0ZW1zLmFwcGVuZChibG9iKTsKKyAgICBtX2l0ZW1zLmFw
cGVuZChJdGVtKGJsb2IsIGZpbGVuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtRGF0YUxpc3QuaAppbmRleCA4ZTFhOTM3Li4yNGY1NDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybURhdGFMaXN0LmgKQEAgLTM0LDE0ICszNCwxNiBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICBJdGVtKCkgeyB9CiAgICAgICAgIEl0ZW0oY29uc3QgV1RGOjpDU3RyaW5nJiBk
YXRhKSA6IG1fZGF0YShkYXRhKSB7IH0KLSAgICAgICAgSXRlbShQYXNzUmVmUHRyPEJsb2I+IGJs
b2IpIDogbV9ibG9iKGJsb2IpIHsgfQorICAgICAgICBJdGVtKFBhc3NSZWZQdHI8QmxvYj4gYmxv
YiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgOiBtX2Jsb2IoYmxvYiksIG1fZmlsZW5hbWUoZmls
ZW5hbWUpIHsgfQogCiAgICAgICAgIGNvbnN0IFdURjo6Q1N0cmluZyYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQogICAgICAgICBCbG9iKiBibG9iKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLmdldCgpOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGVuYW1lOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBXVEY6OkNTdHJpbmcg
bV9kYXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gbV9ibG9iOworICAgICAgICBTdHJpbmcgbV9m
aWxlbmFtZTsKICAgICB9OwogCiAgICAgRm9ybURhdGFMaXN0KGNvbnN0IFRleHRFbmNvZGluZyYp
OwpAQCAtNjEsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgYXBwZW5kU3RyaW5nKGtleSk7
CiAgICAgICAgIGFwcGVuZFN0cmluZyhTdHJpbmc6Om51bWJlcih2YWx1ZSkpOwogICAgIH0KLSAg
ICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgU3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QmxvYj4gYmxv
YikKKyAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgU3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8Qmxv
Yj4gYmxvYiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSA9IFN0cmluZygpKQogICAgIHsKICAgICAg
ICAgYXBwZW5kU3RyaW5nKGtleSk7Ci0gICAgICAgIGFwcGVuZEJsb2IoYmxvYik7CisgICAgICAg
IGFwcGVuZEJsb2IoYmxvYiwgZmlsZW5hbWUpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxJ
dGVtPiYgaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zOyB9CkBAIC03Myw3ICs3NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgQ1N0cmluZyYp
OwogICAgIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5k
QmxvYihQYXNzUmVmUHRyPEJsb2I+KTsKKyAgICB2b2lkIGFwcGVuZEJsb2IoUGFzc1JlZlB0cjxC
bG9iPiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAKICAgICBUZXh0RW5jb2RpbmcgbV9lbmNv
ZGluZzsKICAgICBWZWN0b3I8SXRlbT4gbV9pdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggOTc4NGI3Zi4uMGM4Yjg3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTIyMSw5ICsyMjEs
MTEgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURh
dGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2QKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEZvciBub24tZmlsZSBibG9iLCB1c2UgdGhlIGlkZW50aWZpZXIgcGFy
dCBvZiB0aGUgVVJMIGFzIHRoZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gIkJs
b2IiICsgQmxvYlVSTDo6Z2V0SWRlbnRpZmllcih2YWx1ZS5ibG9iKCktPnVybCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgiLSIsICIiKTsgLy8gRm9yIHNhZmV0
eSwgcmVtb3ZlICctJyBmcm9tIHRoZSBmaWxlbmFtZSBzaW5jZSBzb21lIHNlcnZlcnMgbWF5IG5v
dCBsaWtlIGl0LgorICAgICAgICAgICAgICAgICAgICAvLyBGb3Igbm9uLWZpbGUgYmxvYiwgdXNl
IHRoZSBmaWxlbmFtZSBpZiBpdCBpcyBwYXNzZWQgaW4gRm9ybURhdGEuYXBwZW5kKCkuCisgICAg
ICAgICAgICAgICAgICAgIGlmICghdmFsdWUuZmlsZW5hbWUoKS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lID0gdmFsdWUuZmlsZW5hbWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJibG9iIjsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGluY2x1ZGUgdGhl
IGZpbGVuYW1lPSIuLiIgcGFydCBpbiB0aGUgaGVhZGVyLCBldmVuIGlmIHRoZSBmaWxlbmFtZSBp
cyBlbXB0eQo=
</data>
<flag name="commit-queue"
          id="108164"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110616</attachid>
            <date>2011-10-11 17:26:35 -0700</date>
            <delta_ts>2011-10-12 09:28:31 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>69885_2</filename>
            <type>text/plain</type>
            <size>14997</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZWIxMzBjLi44YTMxYTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTAt
MTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgcGFz
c2luZyBvcHRpb25hbCBmaWxlbmFtZSB3aGVuIEZvcm1EYXRhLmFwcGVuZCgpIGlzIHVzZWQgdG8K
KyAgICAgICAgYXBwZW5kIGEgYmxvYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njk4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvcmVzb3VyY2VzL3NlbmQt
Zm9ybS1kYXRhLWNvbW1vbi5qczoKKyAgICAgICAgKGR1bXBSZXNwb25zZSk6CisgICAgICAgIChz
ZW5kRm9ybURhdGEpOgorICAgICAgICAodGVzdFNlbmRpbmdGb3JtRGF0YSk6CisgICAgICAgICog
aHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zY3JpcHQtdGVzdHMvc2VuZC1mb3JtLWRhdGEtd2l0
aC1zbGljZWQtZmlsZS5qczoKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3JtLWRhdGEtd2l0aC1zbGljZWQtZmlsZS1leHBlY3Rl
ZC50eHQ6CisKIDIwMTEtMTAtMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWFjIHJlYmFzZWxpbmUgYWZ0ZXIgcjk2NjEwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJjZXMvc2VuZC1mb3JtLWRhdGEt
Y29tbW9uLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJj
ZXMvc2VuZC1mb3JtLWRhdGEtY29tbW9uLmpzCmluZGV4IDYwNDczZWEuLmQyYTNlN2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvcmVzb3VyY2VzL3Nl
bmQtZm9ybS1kYXRhLWNvbW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L2Zvcm1kYXRhL3Jlc291cmNlcy9zZW5kLWZvcm0tZGF0YS1jb21tb24uanMKQEAgLTIxLDIxICsy
MSwxOCBAQCBmdW5jdGlvbiBnZXRGaWxlTmFtZShmaWxlUGF0aCkKIAogZnVuY3Rpb24gZHVtcFJl
c3BvbnNlKHhociwgZmlsZVNsaWNlZCkKIHsKLSAgICB2YXIgcmVzcG9uc2VUZXh0ID0geGhyLnJl
c3BvbnNlVGV4dDsKLQotICAgIC8vIElmIHdlJ3JlIHNlbmRpbmcgYSBzbGljZWQgZmlsZSBhbW9u
ZyB0aGUgRm9ybURhdGEsIGEgdW5pcXVlbHkgZ2VuZXJhdGVkIG5hbWUgcHJlZml4ZWQgd2l0aCAi
QmxvYiIgaXMgdXNlZC4KLSAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgcmFuZG9tIHBhcnQg
aW4gdGhlIGZpbGVuYW1lIHNvIHRoYXQgd2UgZ2V0IGNvbnNpc3RlbnQgcmVzdWx0LgotICAgIGlm
IChmaWxlU2xpY2VkKQotICAgICAgICByZXNwb25zZVRleHQgPSByZXNwb25zZVRleHQucmVwbGFj
ZSgvQmxvYlx3ezMyfS9nLCAiQmxvYiIpOwotCi0gICAgZGVidWcocmVzcG9uc2VUZXh0KTsKKyAg
ICBkZWJ1Zyh4aHIucmVzcG9uc2VUZXh0KTsKIH0KIAogZnVuY3Rpb24gc2VuZEZvcm1EYXRhKGZv
cm1EYXRhTGlzdCwgZmlsZVNsaWNlZCwgc2VuZEFzQXN5bmMsIGFkZEV2ZW50SGFuZGxlcnMpCiB7
CiAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBmb3JtRGF0YUxpc3QubGVuZ3RoOyBpKyspCi0gICAgICAgIGZvcm1EYXRhLmFwcGVuZChm
b3JtRGF0YUxpc3RbaV1bJ25hbWUnXSwgZm9ybURhdGFMaXN0W2ldWyd2YWx1ZSddKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGZvcm1EYXRhTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAoZm9ybURhdGFMaXN0W2ldWydmaWxlbmFtZSddKQorICAgICAgICAgICAgZm9ybURhdGEuYXBw
ZW5kKGZvcm1EYXRhTGlzdFtpXVsnbmFtZSddLCBmb3JtRGF0YUxpc3RbaV1bJ3ZhbHVlJ10sIGZv
cm1EYXRhTGlzdFtpXVsnZmlsZW5hbWUnXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZv
cm1EYXRhLmFwcGVuZChmb3JtRGF0YUxpc3RbaV1bJ25hbWUnXSwgZm9ybURhdGFMaXN0W2ldWyd2
YWx1ZSddKTsKKyAgICB9CiAKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAg
ICAgaWYgKGFkZEV2ZW50SGFuZGxlcnMpCkBAIC03NSw3ICs3Miw3IEBAIGZ1bmN0aW9uIHRlc3RT
ZW5kaW5nRm9ybURhdGEoZGF0YUxpc3QsIHNlbmRBc0FzeW5jLCBhZGRFdmVudEhhbmRsZXJzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVNsaWNlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlID0gZmlsZS53ZWJraXRTbGljZShkYXRhTGlzdFtpXVsnc3RhcnQnXSwg
ZGF0YUxpc3RbaV1bJ3N0YXJ0J10gKyBkYXRhTGlzdFtpXVsnbGVuZ3RoJ10pOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhTGlzdC5wdXNoKHsnbmFt
ZSc6IGRhdGFMaXN0W2ldWyduYW1lJ10sICd2YWx1ZSc6IGZpbGV9KTsKKyAgICAgICAgICAgICAg
ICAgICAgZm9ybURhdGFMaXN0LnB1c2goeyduYW1lJzogZGF0YUxpc3RbaV1bJ25hbWUnXSwgJ3Zh
bHVlJzogZmlsZSwgJ2ZpbGVuYW1lJzogZGF0YUxpc3RbaV1bJ2ZpbGVuYW1lJ119KTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zY3JpcHQt
dGVzdHMvc2VuZC1mb3JtLWRhdGEtd2l0aC1zbGljZWQtZmlsZS5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvc2NyaXB0LXRlc3RzL3NlbmQtZm9ybS1kYXRhLXdpdGgt
c2xpY2VkLWZpbGUuanMKaW5kZXggYmY3OWM4Yi4uZDgyMGEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zY3JpcHQtdGVzdHMvc2VuZC1mb3JtLWRh
dGEtd2l0aC1zbGljZWQtZmlsZS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L2Zvcm1kYXRhL3NjcmlwdC10ZXN0cy9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLmpz
CkBAIC05LDIxICs5LDI3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZGVidWcoIlNlbmRp
bmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgc2xpY2VkIGZpbGU6Iik7CiAgICAgdGVzdFNlbmRp
bmdGb3JtRGF0YShbCi0gICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUnLCAn
dmFsdWUnOiAnLi4vcmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQnLCAnc3RhcnQn
IDogMSwgJ2xlbmd0aCcgOiA1IH0KKyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAn
ZmlsZScsICd2YWx1ZSc6ICcuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcs
ICdzdGFydCc6IDEsICdsZW5ndGgnOiA1IH0KKyAgICBdKTsKKworICAgIGRlYnVnKCJTZW5kaW5n
IEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIGNvbXBsZXRlIGZpbGUgYW5kIG9uZSBzbGljZWQgZmls
ZSB3aXRoIG9wdGlvbmFsIGZpbGVuYW1lczoiKTsKKyAgICB0ZXN0U2VuZGluZ0Zvcm1EYXRhKFsK
KyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnZmlsZTEnLCAndmFsdWUnOiAnLi4v
cmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQnLCAnZmlsZW5hbWUnOiAnZmlsZW5h
bWUxJyB9LAorICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMicsICd2YWx1
ZSc6ICcuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFydCc6IDMs
ICdsZW5ndGgnOiAyLCAnZmlsZW5hbWUnOiAnZmlsZW5hbWUyJyB9CiAgICAgXSk7CiAKICAgICBk
ZWJ1ZygiU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzdHJpbmcgYW5kIG9uZSBzbGlj
ZWQgZmlsZToiKTsKICAgICB0ZXN0U2VuZGluZ0Zvcm1EYXRhKFsKICAgICAgICAgeyAndHlwZSc6
ICdzdHJpbmcnLCAnbmFtZSc6ICdzdHJpbmcxJywgJ3ZhbHVlJzogJ2ZvbycgfSwKLSAgICAgICAg
eyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnZmlsZTEnLCAndmFsdWUnOiAnLi4vcmVzb3VyY2Vz
L2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQnLCAnc3RhcnQnIDogMSwgJ2xlbmd0aCcgOiA1IH0K
KyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnZmlsZTEnLCAndmFsdWUnOiAnLi4v
cmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQnLCAnc3RhcnQnOiAxLCAnbGVuZ3Ro
JzogNSB9CiAgICAgXSk7CiAKICAgICBkZWJ1ZygiU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5n
IHR3byBzdHJpbmdzIGFuZCB0d28gc2xpY2VkIGZpbGVzOiIpOwogICAgIHRlc3RTZW5kaW5nRm9y
bURhdGEoWwogICAgICAgICB7ICd0eXBlJzogJ3N0cmluZycsICduYW1lJzogJ3N0cmluZzEnLCAn
dmFsdWUnOiAnZm9vJyB9LAotICAgICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxl
MScsICd2YWx1ZSc6ICcuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdz
dGFydCcgOiAxLCAnbGVuZ3RoJyA6IDUgfSwKKyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25h
bWUnOiAnZmlsZTEnLCAndmFsdWUnOiAnLi4vcmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2Vu
ZC50eHQnLCAnc3RhcnQnOiAxLCAnbGVuZ3RoJzogNSB9LAogICAgICAgICB7ICd0eXBlJzogJ3N0
cmluZycsICduYW1lJzogJ3N0cmluZzInLCAndmFsdWUnOiAnYmFyJyB9LAotICAgICAgICB7ICd0
eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMicsICd2YWx1ZSc6ICcuLi9yZXNvdXJjZXMvZmls
ZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFydCcgOiAzLCAnbGVuZ3RoJyA6IDIgfQorICAg
ICAgICB7ICd0eXBlJzogJ2ZpbGUnLCAnbmFtZSc6ICdmaWxlMicsICd2YWx1ZSc6ICcuLi9yZXNv
dXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcsICdzdGFydCc6IDMsICdsZW5ndGgnOiAy
IH0KICAgICBdKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3JtLWRhdGEtd2l0
aC1zbGljZWQtZmlsZS1leHBlY3RlZC50eHQKaW5kZXggMWY3YzUwZC4uODJhZDc3OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0
YS13aXRoLXNsaWNlZC1maWxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUtZXhwZWN0
ZWQudHh0CkBAIC02LDExICs2LDEzIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBTZW5kaW5n
IEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIHNsaWNlZCBmaWxlIHdpdGggZW1wdHkgbmFtZToKIAog
U2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzbGljZWQgZmlsZToKLWZpbGU9QmxvYjph
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW06MjM0NTYKK2ZpbGU9YmxvYjphcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW06MjM0NTYKK1NlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgY29tcGxldGUg
ZmlsZSBhbmQgb25lIHNsaWNlZCBmaWxlIHdpdGggb3B0aW9uYWwgZmlsZW5hbWVzOgorZmlsZTE9
ZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dDp0ZXh0L3BsYWluOjEyMzQ1Njc4OTAmZmlsZTI9Zmls
ZW5hbWUyOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTo0NQogU2VuZGluZyBGb3JtRGF0YSBjb250
YWluaW5nIG9uZSBzdHJpbmcgYW5kIG9uZSBzbGljZWQgZmlsZToKLXN0cmluZzE9Zm9vJmZpbGUx
PUJsb2I6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOjIzNDU2CitzdHJpbmcxPWZvbyZmaWxlMT1i
bG9iOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbToyMzQ1NgogU2VuZGluZyBGb3JtRGF0YSBjb250
YWluaW5nIHR3byBzdHJpbmdzIGFuZCB0d28gc2xpY2VkIGZpbGVzOgotc3RyaW5nMT1mb28mc3Ry
aW5nMj1iYXImZmlsZTE9QmxvYjphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW06MjM0NTYmZmlsZTI9
QmxvYjphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW06NDUKK3N0cmluZzE9Zm9vJnN0cmluZzI9YmFy
JmZpbGUxPWJsb2I6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOjIzNDU2JmZpbGUyPWJsb2I6YXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtOjQ1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNTY2MzNhLi5jNjk1NTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTAtMTEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgcGFzc2luZyBvcHRpb25hbCBmaWxlbmFtZSB3aGVu
IEZvcm1EYXRhLmFwcGVuZCgpIGlzIHVzZWQgdG8KKyAgICAgICAgYXBwZW5kIGEgYmxvYgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3Qgd2l0aCBuZXcgdGVzdCBjYXNlIGFkZGVkOgorICAgICAgICBodHRwL3Rlc3Rz
L2xvY2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLXdpdGgtc2xpY2VkLWZpbGUuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUZvcm1EYXRhOjphcHBlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NRm9y
bURhdGE6OmFwcGVuZENhbGxiYWNrKToKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwv
RE9NRm9ybURhdGEuaDoKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmlkbDoKKyAgICAgICAg
KiBodG1sL0Zvcm1EYXRhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUxpc3Q6
OmFwcGVuZEJsb2IpOgorICAgICAgICAqIGh0bWwvRm9ybURhdGFMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YUxpc3Q6Okl0ZW06Okl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGFMaXN0OjpJdGVtOjpmaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUxp
c3Q6OmFwcGVuZEJsb2IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKToK
KwogMjAxMS0xMC0xMSAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LCB1bmJyZWFraW5nIHRoZSBRdCBtaW5p
bWFsIGJvdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9y
bURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0
YUN1c3RvbS5jcHAKaW5kZXggMjU1OWU5Ni4uMzE4NjAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTYyLDkgKzYyLDEy
IEBAIEpTVmFsdWUgSlNET01Gb3JtRGF0YTo6YXBwZW5kKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSB1
c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
bmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQotICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFt
ZSwgdG9CbG9iKHZhbHVlKSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKHZhbHVlLmluaGVy
aXRzKCZKU0Jsb2I6OnNfaW5mbykpIHsKKyAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKKyAg
ICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMyAmJiAhZXhlYy0+YXJndW1l
bnQoMikuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHVz
dHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgyKS50b1N0cmluZyhleGVjKSk7CisgICAgICAg
ICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB0b0Jsb2IodmFsdWUpLCBmaWxlbmFtZSk7CisgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFtZSwgdXN0cmluZ1RvU3Ry
aW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5k
ZXggNDY2NGNjYi4uOTQ0MzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNzIsNyArNzIsMTIg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOwogICAgICAgICBCbG9i
KiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICBBU1NFUlQoYmxvYik7
Ci0gICAgICAgIGRvbUZvcm1EYXRhLT5hcHBlbmQobmFtZSwgYmxvYik7CisKKyAgICAgICAgU3Ry
aW5nIGZpbGVuYW1lOworICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAzICYmICFhcmdzWzJd
LT5Jc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgZmlsZW5hbWUgPSB0b1dlYkNvcmVTdHJpbmdX
aXRoTnVsbENoZWNrKGFyZ3NbMl0pOworCisgICAgICAgIGRvbUZvcm1EYXRhLT5hcHBlbmQobmFt
ZSwgYmxvYiwgZmlsZW5hbWUpOwogICAgIH0gZWxzZQogICAgICAgICBkb21Gb3JtRGF0YS0+YXBw
ZW5kKG5hbWUsIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Gb3JtRGF0YS5jcHAKaW5kZXggYmQyMDE1NS4uYThhOTcxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Gb3JtRGF0YS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCB2b2lkIERPTUZvcm1EYXRh
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICBhcHBlbmREYXRhKG5hbWUsIHZhbHVlKTsKIH0KIAotdm9pZCBET01Gb3JtRGF0YTo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgbmFtZSwgQmxvYiogYmxvYikKK3ZvaWQgRE9NRm9ybURhdGE6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIG5hbWUsIEJsb2IqIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
CiB7CiAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgYXBwZW5kQmxvYihuYW1lLCBi
bG9iKTsKKyAgICAgICAgYXBwZW5kQmxvYihuYW1lLCBibG9iLCBmaWxlbmFtZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
Rm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuaAppbmRleCA5Njdk
NjRkLi44NDJlNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01Gb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01Gb3Jt
RGF0YShlbmNvZGluZykpOyB9CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgbmFt
ZSwgQmxvYiopOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgQmxvYiosIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUgPSBTdHJpbmcoKSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRE9NRm9ybURhdGEoY29uc3QgVGV4dEVuY29kaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9y
bURhdGEuaWRsCmluZGV4IDEyNWVjOGUuLmM4Mzg1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NRm9ybURhdGEuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9y
bURhdGEuaWRsCkBAIC0zNiw5ICszNiwxMSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEdlbmVy
YXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMKICAgICBdIERPTUZvcm1E
YXRhIHsKLSAgICAgICAgLy8gdm9pZCBhcHBlbmQoRE9NU3RyaW5nIG5hbWUsIEJsb2IgdmFsdWUp
OworICAgICAgICAvLyB2b2lkIGFwcGVuZChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVl
KTsKKyAgICAgICAgLy8gdm9pZCBhcHBlbmQoRE9NU3RyaW5nIG5hbWUsIEJsb2IgdmFsdWUsIG9w
dGlvbmFsIERPTVN0cmluZyBmaWxlbmFtZSk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgYXBwZW5k
KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUsIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFs
dWVdIERPTVN0cmluZyB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERP
TVN0cmluZyBmaWxlbmFtZSk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxp
c3QuY3BwCmluZGV4IDQ1MDNmZDIuLjA0MGMzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybURhdGFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1EYXRh
TGlzdC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAgdm9pZCBGb3JtRGF0YUxpc3Q6OmFwcGVuZFN0cmlu
Zyhjb25zdCBDU3RyaW5nJiBzKQogICAgIG1faXRlbXMuYXBwZW5kKHMpOwogfQogCi12b2lkIEZv
cm1EYXRhTGlzdDo6YXBwZW5kQmxvYihQYXNzUmVmUHRyPEJsb2I+IGJsb2IpCit2b2lkIEZvcm1E
YXRhTGlzdDo6YXBwZW5kQmxvYihQYXNzUmVmUHRyPEJsb2I+IGJsb2IsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiB7Ci0gICAgbV9pdGVtcy5hcHBlbmQoYmxvYik7CisgICAgbV9pdGVtcy5hcHBl
bmQoSXRlbShibG9iLCBmaWxlbmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybURhdGFMaXN0LmgKaW5kZXggOGUxYTkzNy4uMjRmNTQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1EYXRhTGlzdC5oCkBAIC0zNCwxNCArMzQsMTYgQEAgcHVibGljOgogICAgIHB1YmxpYzoK
ICAgICAgICAgSXRlbSgpIHsgfQogICAgICAgICBJdGVtKGNvbnN0IFdURjo6Q1N0cmluZyYgZGF0
YSkgOiBtX2RhdGEoZGF0YSkgeyB9Ci0gICAgICAgIEl0ZW0oUGFzc1JlZlB0cjxCbG9iPiBibG9i
KSA6IG1fYmxvYihibG9iKSB7IH0KKyAgICAgICAgSXRlbShQYXNzUmVmUHRyPEJsb2I+IGJsb2Is
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIDogbV9ibG9iKGJsb2IpLCBtX2ZpbGVuYW1lKGZpbGVu
YW1lKSB7IH0KIAogICAgICAgICBjb25zdCBXVEY6OkNTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KICAgICAgICAgQmxvYiogYmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxv
Yi5nZXQoKTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9maWxlbmFtZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV1RGOjpDU3RyaW5nIG1f
ZGF0YTsKICAgICAgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsKKyAgICAgICAgU3RyaW5nIG1fZmls
ZW5hbWU7CiAgICAgfTsKIAogICAgIEZvcm1EYXRhTGlzdChjb25zdCBUZXh0RW5jb2RpbmcmKTsK
QEAgLTYxLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgICAgIGFwcGVuZFN0cmluZyhrZXkpOwog
ICAgICAgICBhcHBlbmRTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKICAgICB9Ci0gICAg
dm9pZCBhcHBlbmRCbG9iKGNvbnN0IFN0cmluZyYga2V5LCBQYXNzUmVmUHRyPEJsb2I+IGJsb2Ip
CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFN0cmluZyYga2V5LCBQYXNzUmVmUHRyPEJsb2I+
IGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUgPSBTdHJpbmcoKSkKICAgICB7CiAgICAgICAg
IGFwcGVuZFN0cmluZyhrZXkpOwotICAgICAgICBhcHBlbmRCbG9iKGJsb2IpOworICAgICAgICBh
cHBlbmRCbG9iKGJsb2IsIGZpbGVuYW1lKTsKICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8SXRl
bT4mIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQpAQCAtNzMsNyArNzUsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IENTdHJpbmcmKTsK
ICAgICB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGFwcGVuZEJs
b2IoUGFzc1JlZlB0cjxCbG9iPik7CisgICAgdm9pZCBhcHBlbmRCbG9iKFBhc3NSZWZQdHI8Qmxv
Yj4sIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rp
bmc7CiAgICAgVmVjdG9yPEl0ZW0+IG1faXRlbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDk3ODRiN2YuLjBjOGI4NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yMjEsOSArMjIxLDEx
IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRh
TGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAvLyBGb3Igbm9uLWZpbGUgYmxvYiwgdXNlIHRoZSBpZGVudGlmaWVyIHBhcnQg
b2YgdGhlIFVSTCBhcyB0aGUgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCbG9i
IiArIEJsb2JVUkw6OmdldElkZW50aWZpZXIodmFsdWUuYmxvYigpLT51cmwoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoIi0iLCAiIik7IC8vIEZvciBzYWZldHks
IHJlbW92ZSAnLScgZnJvbSB0aGUgZmlsZW5hbWUgc2luY2Ugc29tZSBzZXJ2ZXJzIG1heSBub3Qg
bGlrZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIG5vbi1maWxlIGJsb2IsIHVzZSB0
aGUgZmlsZW5hbWUgaWYgaXQgaXMgcGFzc2VkIGluIEZvcm1EYXRhLmFwcGVuZCgpLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlLmZpbGVuYW1lKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlLmZpbGVuYW1lKCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiYmxvYiI7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbmNsdWRlIHRoZSBm
aWxlbmFtZT0iLi4iIHBhcnQgaW4gdGhlIGhlYWRlciwgZXZlbiBpZiB0aGUgZmlsZW5hbWUgaXMg
ZW1wdHkK
</data>
<flag name="review"
          id="108166"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="108167"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>