<?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>44188</bug_id>
          
          <creation_ts>2010-08-18 10:58:32 -0700</creation_ts>
          <short_desc>Change BlobStorageData to reuse BlobData</short_desc>
          <delta_ts>2010-08-18 12:04:52 -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>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>266250</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 10:58:32 -0700</bug_when>
    <thetext>We can simplify BlobStorageData by reusing what we have in BlobData. Thus we do not need to define separate BlobStorageDataItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266252</commentid>
    <comment_count>1</comment_count>
      <attachid>64737</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 11:02:06 -0700</bug_when>
    <thetext>Created attachment 64737
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266254</commentid>
    <comment_count>2</comment_count>
      <attachid>64738</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 11:04:04 -0700</bug_when>
    <thetext>Created attachment 64738
Proposed Patch

Removed unwanted project.pbxproj change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266266</commentid>
    <comment_count>3</comment_count>
      <attachid>64738</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-18 11:21:40 -0700</bug_when>
    <thetext>Comment on attachment 64738
Proposed Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266292</commentid>
    <comment_count>4</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 12:04:52 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/65622.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64737</attachid>
            <date>2010-08-18 11:02:06 -0700</date>
            <delta_ts>2010-08-18 11:04:04 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44188</filename>
            <type>text/plain</type>
            <size>17409</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWRhY2YwMC4uYmM3MzdkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wOC0xOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hhbmdlIEJsb2JTdG9yYWdlRGF0YSB0byByZXVzZSBCbG9iRGF0YS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTg4CisKKyAg
ICAgICAgQWxzbyBhZGRyZXNzZWQgRGFyaW4ncyBmZWVkYmFja3MgZm9yIGJ1ZyA0NDExNi4KKwor
ICAgICAgICAqIGh0bWwvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWdpc3RlckJsb2JVUkxUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyQmxv
YlVSTEZyb21UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OnVucmVnaXN0ZXJCbG9iVVJMVGFzayk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9iRGF0YUl0ZW0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJsb2JSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphcHBl
bmRTdG9yYWdlSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUlt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYlN0b3JhZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlN0b3JhZ2VEYXRhOjpjb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
U3RvcmFnZURhdGE6OmNvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
U3RvcmFnZURhdGE6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JTdG9yYWdlRGF0YTo6
QmxvYlN0b3JhZ2VEYXRhKToKKwogMjAxMC0wOC0xOCAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdp
cmlzaEBmb3J3YXJkYmlhcy5pbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjk1M2I5Ni4uNDY3MTk3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIwMzc5LDcgKzIwMzc5LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJl
Z2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1dlYkNvcmUvaHRtbC9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmNwcAppbmRleCAxZGYyOTBkLi5kOTJkNTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIHBvc3RUYXNrVG9NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAK
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7Ci0gICAg
QmxvYlJlZ2lzdHJ5OjppbnN0YW5jZSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JEYXRhKTsK
KyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBibG9iRGF0YSk7CiB9CiAK
IHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgUGFz
c093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1CiAKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkK
IHsKLSAgICBCbG9iUmVnaXN0cnk6Omluc3RhbmNlKCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3Jj
VVJMKTsKKyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwog
fQogCiB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IEtVUkwmIHNyY1VSTCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3UKIAogc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxUYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQmxvYlJlZ2lzdHJ5OjppbnN0YW5j
ZSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CisgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBLVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAppbmRl
eCBiYjI1NmQwLi4yMWU4OTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAK
QEAgLTY0LDYgKzY0LDExIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoY29uc3QgQ1N0cmlu
ZyYgZGF0YSkKICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0oZGF0YSkpOwogfQogCit2
b2lkIEJsb2JEYXRhOjphcHBlbmREYXRhKGNvbnN0IENTdHJpbmcmIGRhdGEsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJ
dGVtKGRhdGEsIG9mZnNldCwgbGVuZ3RoKSk7Cit9CisKIHZvaWQgQmxvYkRhdGE6OmFwcGVuZEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRl
bShwYXRoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCmluZGV4IDE3Y2RmZGQuLjEz
ZTNiOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCkBAIC00NSwxNCArNDUsMTUg
QEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAKICAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgog
ICAgIEJsb2JEYXRhSXRlbSgpCi0gICAgICAgIDogb2Zmc2V0KDApCisgICAgICAgIDogdHlwZShE
YXRhKQorICAgICAgICAsIG9mZnNldCgwKQogICAgICAgICAsIGxlbmd0aCh0b0VuZE9mRmlsZSkK
ICAgICAgICAgLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoZG9Ob3RDaGVja0ZpbGVDaGFuZ2Up
CiAgICAgewogICAgIH0KIAotICAgIC8vIENvbnN0cnVjdG9yIGZvciBTdHJpbmcgdHlwZS4KLSAg
ICBCbG9iRGF0YUl0ZW0oY29uc3QgQ1N0cmluZyYgZGF0YSkKKyAgICAvLyBDb25zdHJ1Y3RvciBm
b3IgU3RyaW5nIHR5cGUgKGNvbXBsZXRlIHN0cmluZykuCisgICAgZXhwbGljaXQgQmxvYkRhdGFJ
dGVtKGNvbnN0IENTdHJpbmcmIGRhdGEpCiAgICAgICAgIDogdHlwZShEYXRhKQogICAgICAgICAs
IGRhdGEoZGF0YSkKICAgICAgICAgLCBvZmZzZXQoMCkKQEAgLTYxLDggKzYyLDE4IEBAIHN0cnVj
dCBCbG9iRGF0YUl0ZW0gewogICAgIHsKICAgICB9CiAKKyAgICAvLyBDb25zdHJ1Y3RvciBmb3Ig
U3RyaW5nIHR5cGUgKHBhcnRpYWwgc3RyaW5nKS4KKyAgICBCbG9iRGF0YUl0ZW0oY29uc3QgQ1N0
cmluZyYgZGF0YSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKKyAgICAgICAg
OiB0eXBlKERhdGEpCisgICAgICAgICwgZGF0YShkYXRhKQorICAgICAgICAsIG9mZnNldChvZmZz
ZXQpCisgICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoZG9Ob3RDaGVja0ZpbGVDaGFuZ2UpCisgICAgeworICAgIH0KKwogICAgIC8vIENv
bnN0cnVjdG9yIGZvciBGaWxlIHR5cGUgKGNvbXBsZXRlIGZpbGUpLgotICAgIEJsb2JEYXRhSXRl
bShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgZXhwbGljaXQgQmxvYkRhdGFJdGVtKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICAgICAgOiB0eXBlKEZpbGUpCiAgICAgICAgICwgcGF0aChwYXRoKQog
ICAgICAgICAsIG9mZnNldCgwKQpAQCAtMTA1LDExICsxMTYsOCBAQCBzdHJ1Y3QgQmxvYkRhdGFJ
dGVtIHsKICAgICAvLyBGb3IgQmxvYiB0eXBlLgogICAgIEtVUkwgdXJsOwogCi0gICAgLy8gRm9y
IEZpbGUgYW5kIEJsb2IgdHlwZS4KICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgIGxvbmcgbG9u
ZyBsZW5ndGg7Ci0KLSAgICAvLyBGb3IgRmlsZSB0eXBlIG9ubHkuCiAgICAgZG91YmxlIGV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZTsKIH07CiAKQEAgLTE0MCw4ICsxNDgsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CisgICAgZnJpZW5kIGNsYXNzIEJsb2JTdG9yYWdlRGF0YTsKKwogICAgIEJsb2JEYXRhKCkg
eyB9CiAKKyAgICAvLyBUaGlzIGlzIG9ubHkgZXhwb3NlZCB0byBCbG9iU3RvcmFnZURhdGEuCisg
ICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IENTdHJpbmcmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25n
IGxvbmcgbGVuZ3RoKTsKKwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIFN0cmluZyBt
X2NvbnRlbnREaXNwb3NpdGlvbjsKICAgICBCbG9iRGF0YUl0ZW1MaXN0IG1faXRlbXM7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZmNkN2IxYy4uY2E3MDFkNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzgsNiArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iRGF0YTsKK2NsYXNzIEJsb2JSZWdp
c3RyeTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VI
YW5kbGU7CkBAIC00NSwxNyArNDYsMjUgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCisvLyBSZXR1
cm5zIGEgc2luZ2xlIGluc3RhbmNlIG9mIEJsb2JSZWdpc3RyeS4KK0Jsb2JSZWdpc3RyeSYgYmxv
YlJlZ2lzdHJ5KCk7IAorCiAvLyBCbG9iUmVnaXN0cnkgaXMgbm90IHRocmVhZC1zYWZlLiBJdCBz
aG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4KIGNsYXNzIEJsb2JSZWdpc3Ry
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEJsb2JSZWdpc3RyeSYgaW5zdGFuY2UoKTsKIAorICAg
IC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2Ig
ZGF0YS4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEJsb2JEYXRhPikgPSAwOworICAgIAorICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJM
IHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBz
cmNVUkwuCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYgc3JjVVJMKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgS1VSTCYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5k
bGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
SGFuZGxlQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7CiAKK3Byb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5CbG9iUmVnaXN0cnkoKSB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCBiYmJiOGYwLi5kYWM5NmVhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0zMiw5ICszMiw2
IEBACiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCiAKLSNpbmNsdWRlICJGaWxlU3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiRmlsZVN0cmVhbVByb3h5LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCkBAIC00NSw2ICs0MiwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0Jsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQmxvYlJl
Z2lzdHJ5SW1wbCwgaW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKIGJv
b2wgQmxvYlJlZ2lzdHJ5SW1wbDo6c2hvdWxkTG9hZFJlc291cmNlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgbm90IGZl
dGNoZWQgdXNpbmcgdGhlIEdFVCBtZXRob2QsIGJhaWwgb3V0LgpAQCAtNzIsMzAgKzc2LDIzIEBA
IGJvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CbG9iUmVn
aXN0cnkmIEJsb2JSZWdpc3RyeTo6aW5zdGFuY2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChCbG9iUmVnaXN0cnlJbXBsLCBpbnN0YW5j
ZSwgKCkpOwotICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURhdGEsIGNv
bnN0IEJsb2JTdG9yYWdlRGF0YUl0ZW1MaXN0JiBpdGVtcykKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3JhZ2VEYXRhLCBj
b25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcykKIHsKLSAgICBmb3IgKEJsb2JTdG9yYWdlRGF0
YUl0ZW1MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlbXMuYmVnaW4oKTsgaXRlciAhPSBp
dGVtcy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JTdG9y
YWdlRGF0YUl0ZW06OkRhdGEpCi0gICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPmFwcGVuZERh
dGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgpOworICAgIGZvciAoQmxv
YkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2luKCk7IGl0ZXIg
IT0gaXRlbXMuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoaXRlci0+dHlwZSA9PSBCbG9i
RGF0YUl0ZW06OkRhdGEpCisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBl
bmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9PSBCbG9iU3RvcmFnZURhdGFJ
dGVtOjpGaWxlKTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+YXBwZW5kRmlsZShpdGVy
LT5wYXRoLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRl
bTo6RmlsZSk7CisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxl
KGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEJsb2JSZWdpc3Ry
eUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdlRGF0
YSwgY29uc3QgQmxvYlN0b3JhZ2VEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0
LCBsb25nIGxvbmcgbGVuZ3RoKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdl
SXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURhdGEsIGNvbnN0IEJsb2JEYXRhSXRl
bUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAg
IEFTU0VSVChsZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7CiAKLSAgICBCbG9i
U3RvcmFnZURhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2luKCk7
CisgICAgQmxvYkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2lu
KCk7CiAgICAgaWYgKG9mZnNldCkgewogICAgICAgICBmb3IgKDsgaXRlciAhPSBpdGVtcy5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IGl0ZXItPmxlbmd0aCkKQEAg
LTEwOCwxMSArMTA1LDExIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0
ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3JhZ2VEYXRhLCBjb25zCiAgICAgZm9yICg7IGl0
ZXIgIT0gaXRlbXMuZW5kKCkgJiYgbGVuZ3RoID4gMDsgKytpdGVyKSB7CiAgICAgICAgIGxvbmcg
bG9uZyBjdXJyZW50TGVuZ3RoID0gaXRlci0+bGVuZ3RoIC0gb2Zmc2V0OwogICAgICAgICBsb25n
IGxvbmcgbmV3TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxlbmd0aCA6IGN1cnJl
bnRMZW5ndGg7Ci0gICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JTdG9yYWdlRGF0YUl0ZW06
OkRhdGEpCi0gICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPmFwcGVuZERhdGEoaXRlci0+ZGF0
YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOworICAgICAgICBpZiAoaXRlci0+
dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGEpCisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEt
Pm1fZGF0YS5hcHBlbmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3
TGVuZ3RoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9
PSBCbG9iU3RvcmFnZURhdGFJdGVtOjpGaWxlKTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0
YS0+YXBwZW5kRmlsZShpdGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0
aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChp
dGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6RmlsZSk7CisgICAgICAgICAgICBibG9iU3RvcmFn
ZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCArIG9mZnNl
dCwgbmV3TGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICB9
CiAgICAgICAgIG9mZnNldCA9IDA7CiAgICAgfQpAQCAtMTIyLDE3ICsxMTksMjAgQEAgdm9pZCBC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3du
UHRyPEJsb2JEYXRhPiBibG8KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
UmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYlN0b3JhZ2VEYXRhID0gQmxvYlN0b3JhZ2VEYXRh
OjpjcmVhdGUoKTsKLSAgICBibG9iU3RvcmFnZURhdGEtPnNldENvbnRlbnRUeXBlKGJsb2JEYXRh
LT5jb250ZW50VHlwZSgpKTsKLSAgICBibG9iU3RvcmFnZURhdGEtPnNldENvbnRlbnREaXNwb3Np
dGlvbihibG9iRGF0YS0+Y29udGVudERpc3Bvc2l0aW9uKCkpOworICAgIFJlZlB0cjxCbG9iU3Rv
cmFnZURhdGE+IGJsb2JTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0YTo6Y3JlYXRlKGJsb2JE
YXRhLT5jb250ZW50VHlwZSgpLCBibG9iRGF0YS0+Y29udGVudERpc3Bvc2l0aW9uKCkpOworCisg
ICAgLy8gVGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhh
dCBpcywgaXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KKyAg
ICAvLyAxKSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUg
cmFuZ2UuCisgICAgLy8gMikgVGhlIEZpbGUgaXRlbSBpcyBkZW5vdGVkIGJ5IHRoZSBmaWxlIHBh
dGgsIHRoZSByYW5nZSBhbmQgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lLgorICAgIC8v
IEFsbCB0aGUgQmxvYiBpdGVtcyBpbiB0aGUgcGFzc2luZyBibG9iIGRhdGEgYXJlIHJlc29sdmVk
IGFuZCBleHBhbmRlZCBpbnRvIGEgc2V0IG9mIERhdGEgYW5kIEZpbGUgaXRlbXMuCiAKICAgICBm
b3IgKEJsb2JEYXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBibG9iRGF0YS0+aXRl
bXMoKS5iZWdpbigpOyBpdGVyICE9IGJsb2JEYXRhLT5pdGVtcygpLmVuZCgpOyArK2l0ZXIpIHsK
ICAgICAgICAgc3dpdGNoIChpdGVyLT50eXBlKSB7CiAgICAgICAgIGNhc2UgQmxvYkRhdGFJdGVt
OjpEYXRhOgotICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5hcHBlbmREYXRhKGl0ZXItPmRh
dGEsIDAsIGl0ZXItPmRhdGEubGVuZ3RoKCkpOworICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRh
LT5tX2RhdGEuYXBwZW5kRGF0YShpdGVyLT5kYXRhLCAwLCBpdGVyLT5kYXRhLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6RmlsZToKLSAg
ICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+YXBwZW5kRmlsZShpdGVyLT5wYXRoLCBpdGVyLT5v
ZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAg
ICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwg
aXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkJsb2I6
CiAgICAgICAgICAgICBpZiAobV9ibG9icy5jb250YWlucyhpdGVyLT51cmwuc3RyaW5nKCkpKQpA
QCAtMTQxLDcgKzE0MSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvCiAgICAgICAgIH0KICAg
ICB9CiAKLQogICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYlN0b3JhZ2VEYXRhKTsK
IH0KIApAQCAtMTU0LDkgKzE1Myw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgc3JjVVJMKQogICAgIGlmICghc3Jj
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iU3Rv
cmFnZURhdGEgPSBCbG9iU3RvcmFnZURhdGE6OmNyZWF0ZSgpOwotICAgIGJsb2JTdG9yYWdlRGF0
YS0+c2V0Q29udGVudFR5cGUoc3JjLT5jb250ZW50VHlwZSgpKTsKLSAgICBibG9iU3RvcmFnZURh
dGEtPnNldENvbnRlbnREaXNwb3NpdGlvbihzcmMtPmNvbnRlbnREaXNwb3NpdGlvbigpKTsKKyAg
ICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iU3RvcmFnZURhdGEgPSBCbG9iU3RvcmFnZURh
dGE6OmNyZWF0ZShzcmMtPmNvbnRlbnRUeXBlKCksIHNyYy0+Y29udGVudERpc3Bvc2l0aW9uKCkp
OwogICAgIGFwcGVuZFN0b3JhZ2VJdGVtcyhibG9iU3RvcmFnZURhdGEuZ2V0KCksIHNyYy0+aXRl
bXMoKSk7CiAgICAgCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBibG9iU3RvcmFnZURh
dGEpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUlt
cGwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXgg
NDI2OTNiYy4uZjYxNjY2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeUltcGwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29s
IHNob3VsZExvYWRSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0
OwotICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJs
b2JTdG9yYWdlRGF0YUl0ZW1MaXN0Jik7Ci0gICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxv
YlN0b3JhZ2VEYXRhKiwgY29uc3QgQmxvYlN0b3JhZ2VEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcg
b2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhC
bG9iU3RvcmFnZURhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0Jik7CisgICAgdm9pZCBhcHBl
bmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYs
IGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+ID4gbV9ibG9iczsKIH07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmggYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmgKaW5kZXggZjQxMjVhNC4uNjUzNWU2MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaApAQCAtMzEsNzYgKzMx
LDMzIEBACiAjaWZuZGVmIEJsb2JTdG9yYWdlRGF0YV9oCiAjZGVmaW5lIEJsb2JTdG9yYWdlRGF0
YV9oCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkJsb2JEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEJsb2JTdG9yYWdlRGF0YUl0ZW0gewot
ICAgIGVudW0gQmxvYlN0b3JlRGF0YUl0ZW1UeXBlIHsgRGF0YSwgRmlsZSB9OwotICAgIEJsb2JT
dG9yZURhdGFJdGVtVHlwZSB0eXBlOwotICAgIGxvbmcgbG9uZyBvZmZzZXQ7Ci0gICAgbG9uZyBs
b25nIGxlbmd0aDsKLQotICAgIC8vIEZvciBzdHJpbmcgZGF0YS4KLSAgICBDU3RyaW5nIGRhdGE7
Ci0KLSAgICAvLyBGb3IgZmlsZSBkYXRhLgotICAgIFN0cmluZyBwYXRoOwotICAgIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7Ci0KLSAgICBCbG9iU3RvcmFnZURhdGFJdGVtKGNvbnN0
IENTdHJpbmcmIGRhdGEsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCi0gICAg
ICAgIDogdHlwZShEYXRhKQotICAgICAgICAsIG9mZnNldChvZmZzZXQpCi0gICAgICAgICwgbGVu
Z3RoKGxlbmd0aCkKLSAgICAgICAgLCBkYXRhKGRhdGEpCi0gICAgICAgICwgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKDApCi0gICAgewotICAgIH0KLQotICAgIEJsb2JTdG9yYWdlRGF0YUl0ZW0o
Y29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBk
b3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAg
ICAgICAgLCBvZmZzZXQob2Zmc2V0KQotICAgICAgICAsIGxlbmd0aChsZW5ndGgpCi0gICAgICAg
ICwgcGF0aChwYXRoKQotICAgICAgICAsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUpCi0gICAgewotICAgIH0KLX07Ci0KLXR5cGVkZWYgVmVjdG9yPEJs
b2JTdG9yYWdlRGF0YUl0ZW0+IEJsb2JTdG9yYWdlRGF0YUl0ZW1MaXN0OwotCiBjbGFzcyBCbG9i
U3RvcmFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iU3RvcmFnZURhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBjb250ZW50RGlzcG9zaXRpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JTdG9yYWdlRGF0YSgpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBCbG9iU3RvcmFnZURhdGEoY29udGVudFR5cGUsIGNvbnRlbnREaXNw
b3NpdGlvbikpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSB7IG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsgfQot
Ci0gICAgY29uc3QgU3RyaW5nJiBjb250ZW50RGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnREaXNwb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uKGNv
bnN0IFN0cmluZyYgY29udGVudERpc3Bvc2l0aW9uKSB7IG1fY29udGVudERpc3Bvc2l0aW9uID0g
Y29udGVudERpc3Bvc2l0aW9uOyB9Ci0gICAgCi0gICAgY29uc3QgQmxvYlN0b3JhZ2VEYXRhSXRl
bUxpc3QmIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY29udGVudFR5cGUoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgY29udGVudERpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNvbnRlbnREaXNwb3NpdGlvbigpOyB9ICAgIAorICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxp
c3QmIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLml0ZW1zKCk7IH0KIAotICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCBDU3RyaW5nJiBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxv
bmcgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYlN0b3JhZ2VEYXRh
SXRlbShkYXRhLCBvZmZzZXQsIGxlbmd0aCkpOwotICAgIH0KK3ByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiAKLSAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorICAgIEJsb2JTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnREaXNwb3NpdGlvbikKICAgICB7Ci0g
ICAgICAgIG1faXRlbXMuYXBwZW5kKEJsb2JTdG9yYWdlRGF0YUl0ZW0ocGF0aCwgb2Zmc2V0LCBs
ZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOworICAgICAgICBtX2RhdGEuc2V0Q29u
dGVudFR5cGUoY29udGVudFR5cGUpOworICAgICAgICBtX2RhdGEuc2V0Q29udGVudERpc3Bvc2l0
aW9uKGNvbnRlbnREaXNwb3NpdGlvbik7CiAgICAgfQogCi1wcml2YXRlOgotICAgIFN0cmluZyBt
X2NvbnRlbnRUeXBlOwotICAgIFN0cmluZyBtX2NvbnRlbnREaXNwb3NpdGlvbjsKLSAgICBCbG9i
U3RvcmFnZURhdGFJdGVtTGlzdCBtX2l0ZW1zOworICAgIEJsb2JEYXRhIG1fZGF0YTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="53362"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64738</attachid>
            <date>2010-08-18 11:04:04 -0700</date>
            <delta_ts>2010-08-18 11:21:40 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44188</filename>
            <type>text/plain</type>
            <size>16887</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWRhY2YwMC4uYmM3MzdkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wOC0xOCAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hhbmdlIEJsb2JTdG9yYWdlRGF0YSB0byByZXVzZSBCbG9iRGF0YS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTg4CisKKyAg
ICAgICAgQWxzbyBhZGRyZXNzZWQgRGFyaW4ncyBmZWVkYmFja3MgZm9yIGJ1ZyA0NDExNi4KKwor
ICAgICAgICAqIGh0bWwvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWdpc3RlckJsb2JVUkxUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyQmxv
YlVSTEZyb21UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OnVucmVnaXN0ZXJCbG9iVVJMVGFzayk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9iRGF0YUl0ZW0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJsb2JSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphcHBl
bmRTdG9yYWdlSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUlt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYlN0b3JhZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYlN0b3JhZ2VEYXRhOjpjb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
U3RvcmFnZURhdGE6OmNvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
U3RvcmFnZURhdGE6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JTdG9yYWdlRGF0YTo6
QmxvYlN0b3JhZ2VEYXRhKToKKwogMjAxMC0wOC0xOCAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdp
cmlzaEBmb3J3YXJkYmlhcy5pbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcCBiL1dlYkNvcmUvaHRtbC9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCAxZGYyOTBkLi5kOTJkNTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1RocmVhZGFibGVCbG9iUmVnaXN0cnku
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIHBvc3RUYXNrVG9NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAKIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQmxvYlVSTFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtV
UkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7Ci0gICAgQmxvYlJlZ2lz
dHJ5OjppbnN0YW5jZSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JEYXRhKTsKKyAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBibG9iRGF0YSk7CiB9CiAKIHZvaWQgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxC
bG9iRGF0YT4gYmxvYkRhdGEpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1CiAKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKIHsKLSAgICBC
bG9iUmVnaXN0cnk6Omluc3RhbmNlKCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKKyAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogfQogCiB2b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtV
UkwmIHNyY1VSTCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3UKIAog
c3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQmxvYlJlZ2lzdHJ5OjppbnN0YW5jZSgpLnVucmVn
aXN0ZXJCbG9iVVJMKHVybCk7CisgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwo
dXJsKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBL
VVJMJiB1cmwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAppbmRleCBiYjI1NmQw
Li4yMWU4OTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKQEAgLTY0LDYg
KzY0LDExIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoY29uc3QgQ1N0cmluZyYgZGF0YSkK
ICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0oZGF0YSkpOwogfQogCit2b2lkIEJsb2JE
YXRhOjphcHBlbmREYXRhKGNvbnN0IENTdHJpbmcmIGRhdGEsIGxvbmcgbG9uZyBvZmZzZXQsIGxv
bmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKGRhdGEs
IG9mZnNldCwgbGVuZ3RoKSk7Cit9CisKIHZvaWQgQmxvYkRhdGE6OmFwcGVuZEZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShwYXRoKSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCmluZGV4IDE3Y2RmZGQuLjEzZTNiOWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCkBAIC00NSwxNCArNDUsMTUgQEAgc3RydWN0
IEJsb2JEYXRhSXRlbSB7CiAKICAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgogICAgIEJsb2JE
YXRhSXRlbSgpCi0gICAgICAgIDogb2Zmc2V0KDApCisgICAgICAgIDogdHlwZShEYXRhKQorICAg
ICAgICAsIG9mZnNldCgwKQogICAgICAgICAsIGxlbmd0aCh0b0VuZE9mRmlsZSkKICAgICAgICAg
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoZG9Ob3RDaGVja0ZpbGVDaGFuZ2UpCiAgICAgewog
ICAgIH0KIAotICAgIC8vIENvbnN0cnVjdG9yIGZvciBTdHJpbmcgdHlwZS4KLSAgICBCbG9iRGF0
YUl0ZW0oY29uc3QgQ1N0cmluZyYgZGF0YSkKKyAgICAvLyBDb25zdHJ1Y3RvciBmb3IgU3RyaW5n
IHR5cGUgKGNvbXBsZXRlIHN0cmluZykuCisgICAgZXhwbGljaXQgQmxvYkRhdGFJdGVtKGNvbnN0
IENTdHJpbmcmIGRhdGEpCiAgICAgICAgIDogdHlwZShEYXRhKQogICAgICAgICAsIGRhdGEoZGF0
YSkKICAgICAgICAgLCBvZmZzZXQoMCkKQEAgLTYxLDggKzYyLDE4IEBAIHN0cnVjdCBCbG9iRGF0
YUl0ZW0gewogICAgIHsKICAgICB9CiAKKyAgICAvLyBDb25zdHJ1Y3RvciBmb3IgU3RyaW5nIHR5
cGUgKHBhcnRpYWwgc3RyaW5nKS4KKyAgICBCbG9iRGF0YUl0ZW0oY29uc3QgQ1N0cmluZyYgZGF0
YSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKKyAgICAgICAgOiB0eXBlKERh
dGEpCisgICAgICAgICwgZGF0YShkYXRhKQorICAgICAgICAsIG9mZnNldChvZmZzZXQpCisgICAg
ICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUo
ZG9Ob3RDaGVja0ZpbGVDaGFuZ2UpCisgICAgeworICAgIH0KKwogICAgIC8vIENvbnN0cnVjdG9y
IGZvciBGaWxlIHR5cGUgKGNvbXBsZXRlIGZpbGUpLgotICAgIEJsb2JEYXRhSXRlbShjb25zdCBT
dHJpbmcmIHBhdGgpCisgICAgZXhwbGljaXQgQmxvYkRhdGFJdGVtKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAgICAgOiB0eXBlKEZpbGUpCiAgICAgICAgICwgcGF0aChwYXRoKQogICAgICAgICAs
IG9mZnNldCgwKQpAQCAtMTA1LDExICsxMTYsOCBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKICAg
ICAvLyBGb3IgQmxvYiB0eXBlLgogICAgIEtVUkwgdXJsOwogCi0gICAgLy8gRm9yIEZpbGUgYW5k
IEJsb2IgdHlwZS4KICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgIGxvbmcgbG9uZyBsZW5ndGg7
Ci0KLSAgICAvLyBGb3IgRmlsZSB0eXBlIG9ubHkuCiAgICAgZG91YmxlIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZTsKIH07CiAKQEAgLTE0MCw4ICsxNDgsMTQgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kQmxvYihjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0
aCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CisgICAg
ZnJpZW5kIGNsYXNzIEJsb2JTdG9yYWdlRGF0YTsKKwogICAgIEJsb2JEYXRhKCkgeyB9CiAKKyAg
ICAvLyBUaGlzIGlzIG9ubHkgZXhwb3NlZCB0byBCbG9iU3RvcmFnZURhdGEuCisgICAgdm9pZCBh
cHBlbmREYXRhKGNvbnN0IENTdHJpbmcmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKTsKKwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRE
aXNwb3NpdGlvbjsKICAgICBCbG9iRGF0YUl0ZW1MaXN0IG1faXRlbXM7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZmNkN2IxYy4uY2E3MDFkNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iRGF0YTsKK2NsYXNzIEJsb2JSZWdpc3RyeTsKIGNs
YXNzIEtVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CkBA
IC00NSwxNyArNDYsMjUgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCisvLyBSZXR1cm5zIGEgc2lu
Z2xlIGluc3RhbmNlIG9mIEJsb2JSZWdpc3RyeS4KK0Jsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5
KCk7IAorCiAvLyBCbG9iUmVnaXN0cnkgaXMgbm90IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25s
eSBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4KIGNsYXNzIEJsb2JSZWdpc3RyeSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEJsb2JSZWdpc3RyeSYgaW5zdGFuY2UoKTsKIAorICAgIC8vIFJlZ2lz
dGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEJs
b2JEYXRhPikgPSAwOworICAgIAorICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmlu
ZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwuCiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYg
c3JjVVJMKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0
ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xp
ZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7CiAKK3Byb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5CbG9i
UmVnaXN0cnkoKSB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcAppbmRleCBiYmJiOGYwLi5kYWM5NmVhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0zMiw5ICszMiw2IEBACiAKICNp
bmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCiAKLSNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCi0j
aW5jbHVkZSAiRmlsZVN0cmVhbVByb3h5LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCkBAIC00NSw2ICs0MiwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK0Jsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQmxvYlJlZ2lzdHJ5SW1w
bCwgaW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKIGJvb2wgQmxvYlJl
Z2lzdHJ5SW1wbDo6c2hvdWxkTG9hZFJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgbm90IGZldGNoZWQgdXNp
bmcgdGhlIEdFVCBtZXRob2QsIGJhaWwgb3V0LgpAQCAtNzIsMzAgKzc2LDIzIEBAIGJvb2wgQmxv
YlJlZ2lzdHJ5SW1wbDo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CbG9iUmVnaXN0cnkmIEJs
b2JSZWdpc3RyeTo6aW5zdGFuY2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChCbG9iUmVnaXN0cnlJbXBsLCBpbnN0YW5jZSwgKCkpOwot
ICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRT
dG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURhdGEsIGNvbnN0IEJsb2JT
dG9yYWdlRGF0YUl0ZW1MaXN0JiBpdGVtcykKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5k
U3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3JhZ2VEYXRhLCBjb25zdCBCbG9i
RGF0YUl0ZW1MaXN0JiBpdGVtcykKIHsKLSAgICBmb3IgKEJsb2JTdG9yYWdlRGF0YUl0ZW1MaXN0
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlbXMuYmVnaW4oKTsgaXRlciAhPSBpdGVtcy5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JTdG9yYWdlRGF0YUl0
ZW06OkRhdGEpCi0gICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPmFwcGVuZERhdGEoaXRlci0+
ZGF0YSwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgpOworICAgIGZvciAoQmxvYkRhdGFJdGVt
TGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2luKCk7IGl0ZXIgIT0gaXRlbXMu
ZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06
OkRhdGEpCisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmREYXRhKGl0
ZXItPmRhdGEsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoKTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9PSBCbG9iU3RvcmFnZURhdGFJdGVtOjpGaWxl
KTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+YXBwZW5kRmlsZShpdGVyLT5wYXRoLCBp
dGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KTsKKyAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6RmlsZSk7
CisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXItPnBh
dGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFw
cGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdlRGF0YSwgY29uc3Qg
QmxvYlN0b3JhZ2VEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxv
bmcgbGVuZ3RoKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxv
YlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURhdGEsIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0
ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIEFTU0VSVChs
ZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7CiAKLSAgICBCbG9iU3RvcmFnZURh
dGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2luKCk7CisgICAgQmxv
YkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGl0ZW1zLmJlZ2luKCk7CiAgICAg
aWYgKG9mZnNldCkgewogICAgICAgICBmb3IgKDsgaXRlciAhPSBpdGVtcy5lbmQoKTsgKytpdGVy
KSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IGl0ZXItPmxlbmd0aCkKQEAgLTEwOCwxMSAr
MTA1LDExIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JT
dG9yYWdlRGF0YSogYmxvYlN0b3JhZ2VEYXRhLCBjb25zCiAgICAgZm9yICg7IGl0ZXIgIT0gaXRl
bXMuZW5kKCkgJiYgbGVuZ3RoID4gMDsgKytpdGVyKSB7CiAgICAgICAgIGxvbmcgbG9uZyBjdXJy
ZW50TGVuZ3RoID0gaXRlci0+bGVuZ3RoIC0gb2Zmc2V0OwogICAgICAgICBsb25nIGxvbmcgbmV3
TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxlbmd0aCA6IGN1cnJlbnRMZW5ndGg7
Ci0gICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JTdG9yYWdlRGF0YUl0ZW06OkRhdGEpCi0g
ICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPmFwcGVuZERhdGEoaXRlci0+ZGF0YSwgaXRlci0+
b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOworICAgICAgICBpZiAoaXRlci0+dHlwZSA9PSBC
bG9iRGF0YUl0ZW06OkRhdGEpCisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5h
cHBlbmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9PSBCbG9iU3Rv
cmFnZURhdGFJdGVtOjpGaWxlKTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+YXBwZW5k
RmlsZShpdGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0aCwgaXRlci0+
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBl
ID09IEJsb2JEYXRhSXRlbTo6RmlsZSk7CisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1f
ZGF0YS5hcHBlbmRGaWxlKGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVu
Z3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICB9CiAgICAgICAg
IG9mZnNldCA9IDA7CiAgICAgfQpAQCAtMTIyLDE3ICsxMTksMjAgQEAgdm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JE
YXRhPiBibG8KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmVmUHRyPEJs
b2JTdG9yYWdlRGF0YT4gYmxvYlN0b3JhZ2VEYXRhID0gQmxvYlN0b3JhZ2VEYXRhOjpjcmVhdGUo
KTsKLSAgICBibG9iU3RvcmFnZURhdGEtPnNldENvbnRlbnRUeXBlKGJsb2JEYXRhLT5jb250ZW50
VHlwZSgpKTsKLSAgICBibG9iU3RvcmFnZURhdGEtPnNldENvbnRlbnREaXNwb3NpdGlvbihibG9i
RGF0YS0+Y29udGVudERpc3Bvc2l0aW9uKCkpOworICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+
IGJsb2JTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0YTo6Y3JlYXRlKGJsb2JEYXRhLT5jb250
ZW50VHlwZSgpLCBibG9iRGF0YS0+Y29udGVudERpc3Bvc2l0aW9uKCkpOworCisgICAgLy8gVGhl
IGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQg
b25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KKyAgICAvLyAxKSBU
aGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCisg
ICAgLy8gMikgVGhlIEZpbGUgaXRlbSBpcyBkZW5vdGVkIGJ5IHRoZSBmaWxlIHBhdGgsIHRoZSBy
YW5nZSBhbmQgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lLgorICAgIC8vIEFsbCB0aGUg
QmxvYiBpdGVtcyBpbiB0aGUgcGFzc2luZyBibG9iIGRhdGEgYXJlIHJlc29sdmVkIGFuZCBleHBh
bmRlZCBpbnRvIGEgc2V0IG9mIERhdGEgYW5kIEZpbGUgaXRlbXMuCiAKICAgICBmb3IgKEJsb2JE
YXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBibG9iRGF0YS0+aXRlbXMoKS5iZWdp
bigpOyBpdGVyICE9IGJsb2JEYXRhLT5pdGVtcygpLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAg
c3dpdGNoIChpdGVyLT50eXBlKSB7CiAgICAgICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpEYXRhOgot
ICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5hcHBlbmREYXRhKGl0ZXItPmRhdGEsIDAsIGl0
ZXItPmRhdGEubGVuZ3RoKCkpOworICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEu
YXBwZW5kRGF0YShpdGVyLT5kYXRhLCAwLCBpdGVyLT5kYXRhLmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6RmlsZToKLSAgICAgICAgICAg
IGJsb2JTdG9yYWdlRGF0YS0+YXBwZW5kRmlsZShpdGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQsIGl0
ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgICAg
IGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+b2Zm
c2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkJsb2I6CiAgICAgICAg
ICAgICBpZiAobV9ibG9icy5jb250YWlucyhpdGVyLT51cmwuc3RyaW5nKCkpKQpAQCAtMTQxLDcg
KzE0MSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvCiAgICAgICAgIH0KICAgICB9CiAKLQog
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYlN0b3JhZ2VEYXRhKTsKIH0KIApAQCAt
MTU0LDkgKzE1Myw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgc3JjVVJMKQogICAgIGlmICghc3JjKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iU3RvcmFnZURhdGEg
PSBCbG9iU3RvcmFnZURhdGE6OmNyZWF0ZSgpOwotICAgIGJsb2JTdG9yYWdlRGF0YS0+c2V0Q29u
dGVudFR5cGUoc3JjLT5jb250ZW50VHlwZSgpKTsKLSAgICBibG9iU3RvcmFnZURhdGEtPnNldENv
bnRlbnREaXNwb3NpdGlvbihzcmMtPmNvbnRlbnREaXNwb3NpdGlvbigpKTsKKyAgICBSZWZQdHI8
QmxvYlN0b3JhZ2VEYXRhPiBibG9iU3RvcmFnZURhdGEgPSBCbG9iU3RvcmFnZURhdGE6OmNyZWF0
ZShzcmMtPmNvbnRlbnRUeXBlKCksIHNyYy0+Y29udGVudERpc3Bvc2l0aW9uKCkpOwogICAgIGFw
cGVuZFN0b3JhZ2VJdGVtcyhibG9iU3RvcmFnZURhdGEuZ2V0KCksIHNyYy0+aXRlbXMoKSk7CiAg
ICAgCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBibG9iU3RvcmFnZURhdGEpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggNDI2OTNiYy4u
ZjYxNjY2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5o
CkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIHNob3VsZExv
YWRSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0OwotICAgIHZv
aWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJsb2JTdG9yYWdl
RGF0YUl0ZW1MaXN0Jik7Ci0gICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VE
YXRhKiwgY29uc3QgQmxvYlN0b3JhZ2VEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBs
b25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFn
ZURhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0Jik7CisgICAgdm9pZCBhcHBlbmRTdG9yYWdl
SXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9u
ZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxCbG9iU3RvcmFnZURhdGE+ID4gbV9ibG9iczsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlN0b3JhZ2VEYXRhLmgKaW5kZXggZjQxMjVhNC4uNjUzNWU2MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaApAQCAtMzEsNzYgKzMxLDMzIEBACiAj
aWZuZGVmIEJsb2JTdG9yYWdlRGF0YV9oCiAjZGVmaW5lIEJsb2JTdG9yYWdlRGF0YV9oCiAKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEJsb2JTdG9yYWdlRGF0YUl0ZW0gewotICAgIGVudW0g
QmxvYlN0b3JlRGF0YUl0ZW1UeXBlIHsgRGF0YSwgRmlsZSB9OwotICAgIEJsb2JTdG9yZURhdGFJ
dGVtVHlwZSB0eXBlOwotICAgIGxvbmcgbG9uZyBvZmZzZXQ7Ci0gICAgbG9uZyBsb25nIGxlbmd0
aDsKLQotICAgIC8vIEZvciBzdHJpbmcgZGF0YS4KLSAgICBDU3RyaW5nIGRhdGE7Ci0KLSAgICAv
LyBGb3IgZmlsZSBkYXRhLgotICAgIFN0cmluZyBwYXRoOwotICAgIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWU7Ci0KLSAgICBCbG9iU3RvcmFnZURhdGFJdGVtKGNvbnN0IENTdHJpbmcm
IGRhdGEsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCi0gICAgICAgIDogdHlw
ZShEYXRhKQotICAgICAgICAsIG9mZnNldChvZmZzZXQpCi0gICAgICAgICwgbGVuZ3RoKGxlbmd0
aCkKLSAgICAgICAgLCBkYXRhKGRhdGEpCi0gICAgICAgICwgZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKDApCi0gICAgewotICAgIH0KLQotICAgIEJsb2JTdG9yYWdlRGF0YUl0ZW0oY29uc3QgU3Ry
aW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQotICAgICAgICAsIGxlbmd0aChsZW5ndGgpCi0gICAgICAgICwgcGF0aChw
YXRoKQotICAgICAgICAsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCi0gICAgewotICAgIH0KLX07Ci0KLXR5cGVkZWYgVmVjdG9yPEJsb2JTdG9yYWdl
RGF0YUl0ZW0+IEJsb2JTdG9yYWdlRGF0YUl0ZW1MaXN0OwotCiBjbGFzcyBCbG9iU3RvcmFnZURh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iU3RvcmFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50RGlzcG9zaXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsb2JTdG9yYWdlRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCbG9iU3RvcmFnZURhdGEoY29udGVudFR5cGUsIGNvbnRlbnREaXNwb3NpdGlvbikp
OwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRUeXBlOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSB7IG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsgfQotCi0gICAgY29u
c3QgU3RyaW5nJiBjb250ZW50RGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRE
aXNwb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgY29udGVudERpc3Bvc2l0aW9uKSB7IG1fY29udGVudERpc3Bvc2l0aW9uID0gY29udGVudERp
c3Bvc2l0aW9uOyB9Ci0gICAgCi0gICAgY29uc3QgQmxvYlN0b3JhZ2VEYXRhSXRlbUxpc3QmIGl0
ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQorICAgIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY29udGVudFR5cGUoKTsgfQorICAgIGNvbnN0
IFN0cmluZyYgY29udGVudERpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNvbnRl
bnREaXNwb3NpdGlvbigpOyB9ICAgIAorICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLml0ZW1zKCk7IH0KIAotICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCBDU3RyaW5nJiBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KQotICAgIHsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYlN0b3JhZ2VEYXRhSXRlbShkYXRh
LCBvZmZzZXQsIGxlbmd0aCkpOwotICAgIH0KK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJs
b2JSZWdpc3RyeUltcGw7CiAKLSAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKQorICAgIEJsb2JTdG9yYWdlRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnREaXNwb3NpdGlvbikKICAgICB7Ci0gICAgICAgIG1f
aXRlbXMuYXBwZW5kKEJsb2JTdG9yYWdlRGF0YUl0ZW0ocGF0aCwgb2Zmc2V0LCBsZW5ndGgsIGV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOworICAgICAgICBtX2RhdGEuc2V0Q29udGVudFR5cGUo
Y29udGVudFR5cGUpOworICAgICAgICBtX2RhdGEuc2V0Q29udGVudERpc3Bvc2l0aW9uKGNvbnRl
bnREaXNwb3NpdGlvbik7CiAgICAgfQogCi1wcml2YXRlOgotICAgIFN0cmluZyBtX2NvbnRlbnRU
eXBlOwotICAgIFN0cmluZyBtX2NvbnRlbnREaXNwb3NpdGlvbjsKLSAgICBCbG9iU3RvcmFnZURh
dGFJdGVtTGlzdCBtX2l0ZW1zOworICAgIEJsb2JEYXRhIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="53363"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="53364"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>