<?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>131133</bug_id>
          
          <creation_ts>2014-04-02 15:35:26 -0700</creation_ts>
          <short_desc>Sandbox violation in NetworkProcess when uploading a bundle</short_desc>
          <delta_ts>2014-04-02 22:59:59 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996875</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-02 15:35:26 -0700</bug_when>
    <thetext>NetworkProcess tries to delete a generated zip itself, but it only has a sandbox extension for reading, so this fails.

WebProcess does this anyway once upload is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996878</commentid>
    <comment_count>1</comment_count>
      <attachid>228435</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-02 15:47:43 -0700</bug_when>
    <thetext>Created attachment 228435
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996882</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 15:50:44 -0700</bug_when>
    <thetext>Attachment 228435 did not pass style-queue:


ERROR: Source/WebCore/platform/network/FormData.h:42:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/FormData.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/FormData.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 4 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>996925</commentid>
    <comment_count>3</comment_count>
      <attachid>228448</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-02 17:09:15 -0700</bug_when>
    <thetext>Created attachment 228448
patch for landing

Anders told me that the keyed archiver encoder is currently unused, we use the old one for persistent storage too. So, need to encode the boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996926</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 17:10:49 -0700</bug_when>
    <thetext>Attachment 228448 did not pass style-queue:


ERROR: Source/WebCore/platform/network/FormData.h:42:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/FormData.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/FormData.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 4 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>996993</commentid>
    <comment_count>5</comment_count>
      <attachid>228463</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-02 22:21:41 -0700</bug_when>
    <thetext>Created attachment 228463
patch for landing

Fixed a couple typos in comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997009</commentid>
    <comment_count>6</comment_count>
      <attachid>228463</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 22:59:56 -0700</bug_when>
    <thetext>Comment on attachment 228463
patch for landing

Clearing flags on attachment: 228463

Committed r166697: &lt;http://trac.webkit.org/changeset/166697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997010</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 22:59:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228435</attachid>
            <date>2014-04-02 15:47:43 -0700</date>
            <delta_ts>2014-04-02 17:09:15 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>DeleteBundle.txt</filename>
            <type>text/plain</type>
            <size>14538</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA0LTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFNhbmRib3ggdmlvbGF0aW9u
IGluIE5ldHdvcmtQcm9jZXNzIHdoZW4gdXBsb2FkaW5nIGEgYnVuZGxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFjayBnZW5lcmF0ZWQgZmlsZSBv
d25lcnNoaXAgZXhwbGljaXRseSwgc28gdGhhdCBlYWNoIGNvcHkgb2YgRm9ybURhdGEgd291bGQg
a25vdworICAgICAgICB3aGV0aGVyIHRvIGRlbGV0ZSB0aGUgZmlsZS4KKworICAgICAgICBUaGUg
cGFydCBpcyBuZWVkZWQgdG8gcHJldmVudCBhc3NlcnRpbmcgaW4gRm9ybURhdGEgZGVzdHJ1Y3Rv
ciBpbiBOZXR3b3JrUHJvY2VzcywKKyAgICAgICAgYmVjYXVzZSBpdCBkb2Vzbid0IGRlbGV0ZSB0
aGUgZmlsZXMuIEFsc28sIHNvbWUgY2xlYW51cC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBEb24ndCBleHBvcnQgRm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKSwg
V2ViS2l0MgorICAgICAgICBkb2Vzbid0IG5lZWQgaXQgYW55IG1vcmUuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6IFJlbW92ZWQgbV9oYXNHZW5lcmF0ZWRGaWxlcy4g
VGhlcmUgaXMgbm8gcHJvYmxlbQorICAgICAgICBpdGVyYXRpbmcgb3ZlciBGb3JtRGF0YUVsZW1l
bnRzIHRvIGNvbXB1dGUgaXQsIGFuZCB0aGF0J3MgbW9yZSByb2J1c3Qgd2hlbiBGb3JtRGF0YXMK
KyAgICAgICAgYXJlIHBhc3NlZCBvciBzdG9yZWQgb24gZGlzayBwZXJtYW5lbnRseS4KKyAgICAg
ICAgVXBkYXRlZCB0b3VjaGVkIGZ1bmN0aW9ucyB0byB1c2UgQysrIGl0ZXJhdGlvbiwgYW5kIHJl
bmFtZWQgImUiIHRvICJlbGVtZW50Ii4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjplbmNv
ZGUpOiBLZXllZCBhcmNoaXZlciB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGtlZXAK
KyAgICAgICAgZW5jb2RpbmcgImhhc0dlbmVyYXRlZEZpbGVzIiwgc28gdGhhdCBnb2luZyBmcm9t
IG5pZ2h0bGllcyB0byBzaGlwcGluZyBTYWZhcmkgd29ya3MuCisgICAgICAgIEFub3RoZXIgdmVy
c2lvbiBpcyBmb3IgSVBDIG9ubHksIHNvIGl0IGRvZXNuJ3QgaGF2ZSBjb21wYXRpYmlsaXR5IGNv
bmNlcm5zLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOiAoV2ViQ29y
ZTo6Rm9ybURhdGFFbGVtZW50OjpGb3JtRGF0YUVsZW1lbnQpOgorICAgICAgICBBZGRlZCBtX293
bnNHZW5lcmF0ZWRGaWxlLiBGb3JtRGF0YSB3aWxsIG9ubHkgZGVsZXRlIGZpbGVzIGl0IG93bnMu
IFNpbmNlIGZpbGVzCisgICAgICAgIGFyZSBnZW5lcmF0ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGZv
cm0gc3VibWlzc2lvbiwgaXQncyBhbHdheXMgdGhlIEZvcm1EYXRhIGJlaW5nCisgICAgICAgIHN1
Ym1pdHRlZCB0aGF0IG93bnMgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKwogMjAxNC0wNC0wMSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgTG9hZCBNZWRpYSBDb250cm9s
cyBqcy9jc3MgZnJvbSBidW5kbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAx
NjY2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTIzNCw3ICsxMjM0LDYgQEAgX19aTjdXZWJDb3JlOERvY3VtZW50MjdyZW1vdmVNZWRpYUNh
blN0YQogX19aTjdXZWJDb3JlOERvY3VtZW50MzZ1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgogX19aTjdXZWJDb3JlOERv
Y3VtZW50OGljb25VUkxzRWkKLV9fWk43V2ViQ29yZThGb3JtRGF0YTI4cmVtb3ZlR2VuZXJhdGVk
RmlsZXNJZk5lZWRlZEV2CiBfX1pON1dlYkNvcmU4Rm9ybURhdGE2Y3JlYXRlRVBLdm0KIF9fWk43
V2ViQ29yZThGb3JtRGF0YTZkZWNvZGVFUk4zV1RGN0RlY29kZXJFCiBfX1pON1dlYkNvcmU4Rm9y
bURhdGFEMUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcAkocmV2aXNpb24gMTY2NjYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDI4ICs0NCwyMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBGb3JtRGF0YTo6Rm9ybURhdGEoKQogICAgIDogbV9p
ZGVudGlmaWVyKDApCi0gICAgLCBtX2hhc0dlbmVyYXRlZEZpbGVzKGZhbHNlKQogICAgICwgbV9h
bHdheXNTdHJlYW0oZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhKGZhbHNlKQog
ewogfQogCiBpbmxpbmUgRm9ybURhdGE6OkZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJiBkYXRhKQot
ICAgIDogUmVmQ291bnRlZDxGb3JtRGF0YT4oKQotICAgICwgbV9lbGVtZW50cyhkYXRhLm1fZWxl
bWVudHMpCisgICAgOiBtX2VsZW1lbnRzKGRhdGEubV9lbGVtZW50cykKICAgICAsIG1faWRlbnRp
ZmllcihkYXRhLm1faWRlbnRpZmllcikKLSAgICAsIG1faGFzR2VuZXJhdGVkRmlsZXMoZmFsc2Up
CiAgICAgLCBtX2Fsd2F5c1N0cmVhbShmYWxzZSkKICAgICAsIG1fY29udGFpbnNQYXNzd29yZERh
dGEoZGF0YS5tX2NvbnRhaW5zUGFzc3dvcmREYXRhKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBi
ZSBjb3B5aW5nIEZvcm1EYXRhIHRoYXQgaGFzbid0IGFscmVhZHkgcmVtb3ZlZCBpdHMgZ2VuZXJh
dGVkIGZpbGVzCiAgICAgLy8gYnV0IGp1c3QgaW4gY2FzZSwgbWFrZSBzdXJlIHRoZSBuZXcgRm9y
bURhdGEgaXMgcmVhZHkgdG8gZ2VuZXJhdGUgaXRzIG93biBmaWxlcy4KLSAgICBpZiAoZGF0YS5t
X2hhc0dlbmVyYXRlZEZpbGVzKSB7Ci0gICAgICAgIHNpemVfdCBuID0gbV9lbGVtZW50cy5zaXpl
KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAg
ICBGb3JtRGF0YUVsZW1lbnQmIGUgPSBtX2VsZW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKGUu
bV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0gICAgICAgICAgICAgICAg
ZS5tX2dlbmVyYXRlZEZpbGVuYW1lID0gU3RyaW5nKCk7CisgICAgZm9yIChGb3JtRGF0YUVsZW1l
bnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9
PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlKSB7CisgICAgICAgICAgICBlbGVtZW50Lm1f
Z2VuZXJhdGVkRmlsZW5hbWUgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgIGVsZW1lbnQubV9vd25z
R2VuZXJhdGVkRmlsZSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzQsNyArNjks
NyBAQCBGb3JtRGF0YTo6fkZvcm1EYXRhKCkKIHsKICAgICAvLyBUaGlzIGNsZWFudXAgc2hvdWxk
J3ZlIGhhcHBlbmVkIHdoZW4gdGhlIGZvcm0gc3VibWlzc2lvbiBmaW5pc2hlZC4KICAgICAvLyBK
dXN0IGluIGNhc2UsIGxldCdzIGFzc2VydCwgYW5kIGRvIHRoZSBjbGVhbnVwIGFueXdheSBpbiBy
ZWxlYXNlIGJ1aWxkcy4KLSAgICBBU1NFUlQoIW1faGFzR2VuZXJhdGVkRmlsZXMpOworICAgIEFT
U0VSVCghaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpKTsKICAgICByZW1vdmVHZW5lcmF0ZWRGaWxl
c0lmTmVlZGVkKCk7CiB9CiAKQEAgLTEyOSwyNCArMTI0LDIyIEBAIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpkZWVwQ29weSgKIAogICAgIGZvcm1EYXRhLT5tX2Fsd2F5c1N0cmVhbSA9
IG1fYWx3YXlzU3RyZWFtOwogCi0gICAgc2l6ZV90IG4gPSBtX2VsZW1lbnRzLnNpemUoKTsKLSAg
ICBmb3JtRGF0YS0+bV9lbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG4pOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZSA9IG1fZWxlbWVudHNbaV07Ci0gICAgICAgIHN3aXRjaCAoZS5tX3R5cGUpIHsKKyAg
ICBmb3JtRGF0YS0+bV9lbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZWxlbWVudHMu
c2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKKyAgICAgICAgc3dpdGNoIChlbGVtZW50Lm1fdHlwZSkgewogICAgICAgICBjYXNl
IEZvcm1EYXRhRWxlbWVudDo6ZGF0YToKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRz
LnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5tX2RhdGEpKTsKKyAgICAgICAgICAg
IGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZWxl
bWVudC5tX2RhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZvcm1EYXRh
RWxlbWVudDo6ZW5jb2RlZEZpbGU6CiAjaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgICAgICBmb3Jt
RGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV9maWxl
bmFtZSwgZS5tX2ZpbGVTdGFydCwgZS5tX2ZpbGVMZW5ndGgsIGUubV9leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLCBlLm1fc2hvdWxkR2VuZXJhdGVGaWxlKSk7CisgICAgICAgICAgICBmb3Jt
RGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGVsZW1lbnQu
bV9maWxlbmFtZSwgZWxlbWVudC5tX2ZpbGVTdGFydCwgZWxlbWVudC5tX2ZpbGVMZW5ndGgsIGVs
ZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBlbGVtZW50Lm1fc2hvdWxkR2Vu
ZXJhdGVGaWxlKSk7CiAjZWxzZQotICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5j
aGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fZmlsZW5hbWUsIGUubV9zaG91bGRHZW5l
cmF0ZUZpbGUpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFw
cGVuZChGb3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX2ZpbGVuYW1lLCBlbGVtZW50Lm1fc2hvdWxk
R2VuZXJhdGVGaWxlKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShC
TE9CKQogICAgICAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2I6Ci0gICAgICAg
ICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50
KGUubV91cmwpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFw
cGVuZChGb3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX3VybCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICAgICAgICAgfQpAQCAtMzY3LDQyICszNjAsNTYgQEAgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbAogCiB2b2lkIEZvcm1EYXRhOjpnZW5lcmF0ZUZpbGVz
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQoIW1faGFzR2VuZXJhdGVkRmlsZXMp
OwotCi0gICAgaWYgKG1faGFzR2VuZXJhdGVkRmlsZXMpCi0gICAgICAgIHJldHVybjsKLQogICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2l6ZV90IG4gPSBtX2VsZW1lbnRzLnNpemUoKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICBGb3JtRGF0YUVsZW1lbnQmIGUgPSBt
X2VsZW1lbnRzW2ldOwotICAgICAgICBpZiAoZS5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50Ojpl
bmNvZGVkRmlsZSAmJiBlLm1fc2hvdWxkR2VuZXJhdGVGaWxlKSB7Ci0gICAgICAgICAgICBlLm1f
Z2VuZXJhdGVkRmlsZW5hbWUgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5nZW5lcmF0ZVJlcGxh
Y2VtZW50RmlsZShlLm1fZmlsZW5hbWUpOwotICAgICAgICAgICAgbV9oYXNHZW5lcmF0ZWRGaWxl
cyA9IHRydWU7CisgICAgZm9yIChGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRz
KSB7CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29k
ZWRGaWxlICYmIGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlKTsKKyAgICAgICAgICAgIEFTU0VSVChl
bGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmICgh
ZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGVsZW1lbnQubV9maWxl
bmFtZSk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVk
RmlsZXNJZk5lZWRlZCgpCitib29sIEZvcm1EYXRhOjpoYXNHZW5lcmF0ZWRGaWxlcygpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX2hhc0dlbmVyYXRlZEZpbGVzKQotICAgICAgICByZXR1cm47CisgICAg
Zm9yIChjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CisgICAg
ICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlICYm
ICFlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIHNpemVfdCBuID0g
bV9lbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsK
LSAgICAgICAgRm9ybURhdGFFbGVtZW50JiBlID0gbV9lbGVtZW50c1tpXTsKLSAgICAgICAgaWYg
KGUubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUgJiYgIWUubV9nZW5lcmF0
ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChlLm1fc2hvdWxkR2Vu
ZXJhdGVGaWxlKTsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3RvcnkgPSBkaXJlY3RvcnlOYW1l
KGUubV9nZW5lcmF0ZWRGaWxlbmFtZSk7Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGUubV9nZW5l
cmF0ZWRGaWxlbmFtZSk7Citib29sIEZvcm1EYXRhOjpoYXNPd25lZEdlbmVyYXRlZEZpbGVzKCkg
Y29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6
ZW5jb2RlZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKK3sKKyAg
ICBmb3IgKEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKKyAgICAgICAg
aWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUgJiYgZWxl
bWVudC5tX293bnNHZW5lcmF0ZWRGaWxlKSB7CisgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQu
bV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQVNTRVJUKGVsZW1l
bnQubV9zaG91bGRHZW5lcmF0ZUZpbGUpOworICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9
IGRpcmVjdG9yeU5hbWUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKKyAgICAgICAgICAg
IGRlbGV0ZUZpbGUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKICAgICAgICAgICAgIGRl
bGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7Ci0gICAgICAgICAgICBlLm1fZ2VuZXJhdGVk
RmlsZW5hbWUgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxl
bmFtZSA9IFN0cmluZygpOworICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxl
ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9oYXNHZW5lcmF0ZWRGaWxlcyA9IGZh
bHNlOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVFbGVtZW50KEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCkKQEAgLTU0Nyw4ICs1NTQsNiBAQCB2b2lkIEZv
cm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCiAgICAgICAgIGVuY29kZUVsZW1lbnQoZW5jb2RlciwgbV9lbGVtZW50
c1tpXSk7CiAKLSAgICBlbmNvZGVyLmVuY29kZUJvb2wobV9oYXNHZW5lcmF0ZWRGaWxlcyk7Ci0K
ICAgICBlbmNvZGVyLmVuY29kZUludDY0KG1faWRlbnRpZmllcik7CiB9CiAKQEAgLTU2MSw3ICs1
NjYsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvCiAgICAgICAg
IGVuY29kZUVsZW1lbnQoZW5jb2RlciwgZWxlbWVudCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVy
LmVuY29kZUJvb2woImhhc0dlbmVyYXRlZEZpbGVzIiwgbV9oYXNHZW5lcmF0ZWRGaWxlcyk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYXNHZW5lcmF0ZWRGaWxlcyIsIGhhc0dlbmVyYXRlZEZp
bGVzKCkpOyAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGRlY29kZSgpIGRvZXNuJ3Qg
cmVhZCB0aGlzIGFueSBtb3JlLgogICAgIGVuY29kZXIuZW5jb2RlSW50NjQoImlkZW50aWZpZXIi
LCBtX2lkZW50aWZpZXIpOwogfQogCkBAIC01ODksOSArNTk0LDYgQEAgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gRm9ybURhdGE6OmRlY29kZShEZQogICAgICAgICBkYXRhLT5tX2VsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKICAgICB9CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbChkYXRhLT5t
X2hhc0dlbmVyYXRlZEZpbGVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlSW50NjQoZGF0YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHJldmlz
aW9uIDE2NjY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVmVjdG9yPGNoYXI+JiBhcnJheSkgOiBtX3R5cGUoZGF0
YSksIG1fZGF0YShhcnJheSkgeyB9CiAKICNpZiBFTkFCTEUoQkxPQikKLSAgICBGb3JtRGF0YUVs
ZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIGZpbGVTdGFydCwgbG9uZyBs
b25nIGZpbGVMZW5ndGgsIGRvdWJsZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBib29s
IHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZp
bGVuYW1lKSwgbV9maWxlU3RhcnQoZmlsZVN0YXJ0KSwgbV9maWxlTGVuZ3RoKGZpbGVMZW5ndGgp
LCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9CisgICAg
Rm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBmaWxlU3Rh
cnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9m
aWxlbmFtZShmaWxlbmFtZSksIG1fZmlsZVN0YXJ0KGZpbGVTdGFydCksIG1fZmlsZUxlbmd0aChm
aWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUp
LCBtX293bnNHZW5lcmF0ZWRGaWxlKGZhbHNlKSB7IH0KICAgICBleHBsaWNpdCBGb3JtRGF0YUVs
ZW1lbnQoY29uc3QgVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJsKGJs
b2JVUkwpIHsgfQogI2Vsc2UKLSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9m
aWxlbmFtZShmaWxlbmFtZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmls
ZSkgeyB9CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wg
c2hvdWxkR2VuZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmls
ZW5hbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpLCBtX293bnNH
ZW5lcmF0ZWRGaWxlKGZhbHNlKSB7IH0KICNlbmRpZgogCiAgICAgZW51bSBUeXBlIHsKQEAgLTYy
LDYgKzYyLDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgU3RyaW5nIG1fZ2VuZXJhdGVkRmlsZW5h
bWU7CiAgICAgYm9vbCBtX3Nob3VsZEdlbmVyYXRlRmlsZTsKKyAgICBib29sIG1fb3duc0dlbmVy
YXRlZEZpbGU7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgYSwgY29uc3QgRm9ybURhdGFFbGVtZW50JiBiKQpAQCAtMTA0LDkgKzEwNSwxMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0
b3I8Y2hhcj4mKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0
IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIEVuY29kaW5nVHlwZSA9IEZvcm1V
UkxFbmNvZGVkKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlTXVsdGlQ
YXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIERvY3VtZW50Kik7
CisgICAgfkZvcm1EYXRhKCk7CisKKyAgICAvLyBGSVhNRTogQm90aCB0aGVzZSBmdW5jdGlvbnMg
cGVyZm9ybSBhIGRlZXAgY29weSBvZiBtX2VsZW1lbnRzLCBidXQgZGlmZmVyIGluIGhhbmRsaW5n
IG9mIG90aGVyIGRhdGEgbWVtYmVycy4KKyAgICAvLyBIb3cgbXVjaCBvZiB0aGF0IGlzIGludGVu
dGlvbmFsPyBXZSBuZWVkIGJldHRlciBuYW1lcyB0aGF0IGV4cGxhaW4gdGhlIGRpZmZlcmVuY2Uu
CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7Ci0gICAgfkZvcm1EYXRhKCk7CiAKICAgICB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikg
Y29uc3Q7CkBAIC0xNjIsMTAgKzE2NiwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRL
ZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2Rpbmcm
LCBib29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQqLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJM
RW5jb2RlZCk7CiAKKyAgICBib29sIGhhc0dlbmVyYXRlZEZpbGVzKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNPd25lZEdlbmVyYXRlZEZpbGVzKCkgY29uc3Q7CisKICAgICBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiBtX2VsZW1lbnRzOwogCiAgICAgaW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgYm9v
bCBtX2hhc0dlbmVyYXRlZEZpbGVzOwogICAgIGJvb2wgbV9hbHdheXNTdHJlYW07CiAgICAgVmVj
dG9yPGNoYXI+IG1fYm91bmRhcnk7CiAgICAgYm9vbCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2NjcxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDQtMDIgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgU2FuZGJveCB2aW9sYXRpb24g
aW4gTmV0d29ya1Byb2Nlc3Mgd2hlbiB1cGxvYWRpbmcgYSBidW5kbGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTEzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgIERvbid0IGRlbGV0ZSB0aGUgZmlsZXMu
IEl0J3MgY2FuJ3Qgd29yay4KKwogMjAxNC0wNC0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIERvY3VtZW50IFdLVUlEZWxlZ2F0ZSBhbmQgV0tXaW5k
b3dGZWF0dXJlcwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNjY2NjIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsOSArMTQxLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNsZWFudXAoKQogCiAgICAgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKLSAgICBp
ZiAoRm9ybURhdGEqIGZvcm1EYXRhID0gcmVxdWVzdCgpLmh0dHBCb2R5KCkpCi0gICAgICAgIGZv
cm1EYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7Ci0KICAgICAvLyBUZWxsIHRo
ZSBzY2hlZHVsZXIgYWJvdXQgdGhpcyBmaW5pc2hlZCBsb2FkZXIgc29vbiBzbyBpdCBjYW4gc3Rh
cnQgbW9yZSBuZXR3b3JrIHJlcXVlc3RzLgogICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1bGVSZW1vdmVMb2FkZXIodGhpcyk7
CiAKQEAgLTE3NSwxMCArMTcyLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUp
OwogCi0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogQ2FjaGUgdGhlIHJlc3BvbnNlLgot
ICAgIGlmIChGb3JtRGF0YSogZm9ybURhdGEgPSByZXF1ZXN0KCkuaHR0cEJvZHkoKSkKLSAgICAg
ICAgZm9ybURhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKTsKLQogICAgIG1fbmV0
d29ya0xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKTsKIAog
ICAgIC8vIG1faGFuZGxlIHdpbGwgYmUgMCBpZiB0aGUgcmVxdWVzdCBnb3QgYWJvcnRlZCBhYm92
ZS4K
</data>
<flag name="review"
          id="252723"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228448</attachid>
            <date>2014-04-02 17:09:15 -0700</date>
            <delta_ts>2014-04-02 22:21:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>DeleteBundle.txt</filename>
            <type>text/plain</type>
            <size>14390</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA0LTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFNhbmRib3ggdmlvbGF0aW9u
IGluIE5ldHdvcmtQcm9jZXNzIHdoZW4gdXBsb2FkaW5nIGEgYnVuZGxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgVHJhY2sgZ2VuZXJhdGVkIGZpbGUgb3du
ZXJzaGlwIGV4cGxpY2l0bHksIHNvIHRoYXQgZWFjaCBjb3B5IG9mIEZvcm1EYXRhIHdvdWxkIGtu
b3cKKyAgICAgICAgd2hldGhlciB0byBkZWxldGUgdGhlIGZpbGUuCisKKyAgICAgICAgVGhlIHBh
cnQgaXMgbmVlZGVkIHRvIHByZXZlbnQgYXNzZXJ0aW5nIGluIEZvcm1EYXRhIGRlc3RydWN0b3Ig
aW4gTmV0d29ya1Byb2Nlc3MsCisgICAgICAgIGJlY2F1c2UgaXQgZG9lc24ndCBkZWxldGUgdGhl
IGZpbGVzLiBBbHNvLCBzb21lIGNsZWFudXAuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjog
RG9uJ3QgZXhwb3J0IEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCksIFdl
YktpdDIKKyAgICAgICAgZG9lc24ndCBuZWVkIGl0IGFueSBtb3JlLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOiBSZW1vdmVkIG1faGFzR2VuZXJhdGVkRmlsZXMuIFRo
ZXJlIGlzIG5vIHByb2JsZW0KKyAgICAgICAgaXRlcmF0aW5nIG92ZXIgRm9ybURhdGFFbGVtZW50
cyB0byBjb21wdXRlIGl0LCBhbmQgdGhhdCdzIG1vcmUgcm9idXN0IHdoZW4gRm9ybURhdGFzCisg
ICAgICAgIGFyZSBwYXNzZWQgb3Igc3RvcmVkIG9uIGRpc2sgcGVybWFuZW50bHkuCisgICAgICAg
IFVwZGF0ZWQgdG91Y2hlZCBmdW5jdGlvbnMgdG8gdXNlIEMrKyBpdGVyYXRpb24sIGFuZCByZW5h
bWVkICJlIiB0byAiZWxlbWVudCIuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZW5jb2Rl
KTogS2VlcCBlbmNvZGluZyBhIGJvb2xlYW4gZm9yIGhhc0dlbmVyYXRlZEZpbGVzLCBiZWNhdXNl
CisgICAgICAgIHRoZSBlbmNvZGVkIEZvcm1EYXRhIGNhbiBiZSBzdG9yZWQgcGVyc2l0ZW50bHks
IGFuZCB3ZSBjYW4ndCBjaGFuZ2UgdGhlIGZvcm1hdC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaDogKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6Rm9ybURhdGFFbGVt
ZW50KToKKyAgICAgICAgQWRkZWQgbV9vd25zR2VuZXJhdGVkRmlsZS4gRm9ybURhdGEgd2lsbCBv
bmx5IGRlbGV0ZSBmaWxlcyBpdCBvd25zLiBTaW5jZSBmaWxlcworICAgICAgICBhcmUgZ2VuZXJh
dGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBmb3JtIHN1Ym1pc3Npb24sIGl0J3MgYWx3YXlzIHRoZSBG
b3JtRGF0YSBiZWluZworICAgICAgICBzdWJtaXR0ZWQgdGhhdCBvd25zIHRoZSBnZW5lcmF0ZWQg
ZmlsZXMuCisKIDIwMTQtMDQtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWQgTWVkaWEgQ29udHJvbHMganMvY3NzIGZyb20gYnVuZGxlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY2NjYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMzQsNyArMTIzNCw2IEBAIF9fWk43V2ViQ29y
ZThEb2N1bWVudDI3cmVtb3ZlTWVkaWFDYW5TdGEKIF9fWk43V2ViQ29yZThEb2N1bWVudDM2dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzRXYKIF9fWk43V2ViQ29yZThEb2N1bWVu
dDRoZWFkRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDhpY29uVVJMc0VpCi1fX1pON1dlYkNvcmU4
Rm9ybURhdGEyOHJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWRFdgogX19aTjdXZWJDb3JlOEZv
cm1EYXRhNmNyZWF0ZUVQS3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGE2ZGVjb2RlRVJOM1dURjdE
ZWNvZGVyRQogX19aTjdXZWJDb3JlOEZvcm1EYXRhRDFFdgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDE2NjY2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIEZvcm1EYXRh
OjpGb3JtRGF0YSgpCiAgICAgOiBtX2lkZW50aWZpZXIoMCkKLSAgICAsIG1faGFzR2VuZXJhdGVk
RmlsZXMoZmFsc2UpCiAgICAgLCBtX2Fsd2F5c1N0cmVhbShmYWxzZSkKICAgICAsIG1fY29udGFp
bnNQYXNzd29yZERhdGEoZmFsc2UpCiB7CkBAIC01NCwxOCArNTMsMTUgQEAgaW5saW5lIEZvcm1E
YXRhOjpGb3JtRGF0YShjb25zdCBGb3JtRGF0YQogICAgIDogUmVmQ291bnRlZDxGb3JtRGF0YT4o
KQogICAgICwgbV9lbGVtZW50cyhkYXRhLm1fZWxlbWVudHMpCiAgICAgLCBtX2lkZW50aWZpZXIo
ZGF0YS5tX2lkZW50aWZpZXIpCi0gICAgLCBtX2hhc0dlbmVyYXRlZEZpbGVzKGZhbHNlKQogICAg
ICwgbV9hbHdheXNTdHJlYW0oZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhKGRh
dGEubV9jb250YWluc1Bhc3N3b3JkRGF0YSkKIHsKICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgY29w
eWluZyBGb3JtRGF0YSB0aGF0IGhhc24ndCBhbHJlYWR5IHJlbW92ZWQgaXRzIGdlbmVyYXRlZCBm
aWxlcwogICAgIC8vIGJ1dCBqdXN0IGluIGNhc2UsIG1ha2Ugc3VyZSB0aGUgbmV3IEZvcm1EYXRh
IGlzIHJlYWR5IHRvIGdlbmVyYXRlIGl0cyBvd24gZmlsZXMuCi0gICAgaWYgKGRhdGEubV9oYXNH
ZW5lcmF0ZWRGaWxlcykgewotICAgICAgICBzaXplX3QgbiA9IG1fZWxlbWVudHMuc2l6ZSgpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgRm9y
bURhdGFFbGVtZW50JiBlID0gbV9lbGVtZW50c1tpXTsKLSAgICAgICAgICAgIGlmIChlLm1fdHlw
ZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlKQotICAgICAgICAgICAgICAgIGUubV9n
ZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOworICAgIGZvciAoRm9ybURhdGFFbGVtZW50JiBl
bGVtZW50IDogbV9lbGVtZW50cykgeworICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9y
bURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkgeworICAgICAgICAgICAgZWxlbWVudC5tX2dlbmVy
YXRlZEZpbGVuYW1lID0gU3RyaW5nKCk7CisgICAgICAgICAgICBlbGVtZW50Lm1fb3duc0dlbmVy
YXRlZEZpbGUgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTc0LDcgKzcwLDcgQEAg
Rm9ybURhdGE6On5Gb3JtRGF0YSgpCiB7CiAgICAgLy8gVGhpcyBjbGVhbnVwIHNob3VsZCd2ZSBo
YXBwZW5lZCB3aGVuIHRoZSBmb3JtIHN1Ym1pc3Npb24gZmluaXNoZWQuCiAgICAgLy8gSnVzdCBp
biBjYXNlLCBsZXQncyBhc3NlcnQsIGFuZCBkbyB0aGUgY2xlYW51cCBhbnl3YXkgaW4gcmVsZWFz
ZSBidWlsZHMuCi0gICAgQVNTRVJUKCFtX2hhc0dlbmVyYXRlZEZpbGVzKTsKKyAgICBBU1NFUlQo
IWhhc093bmVkR2VuZXJhdGVkRmlsZXMoKSk7CiAgICAgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5l
ZWRlZCgpOwogfQogCkBAIC0xMjksMjQgKzEyNSwyMiBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBG
b3JtRGF0YTo6ZGVlcENvcHkoCiAKICAgICBmb3JtRGF0YS0+bV9hbHdheXNTdHJlYW0gPSBtX2Fs
d2F5c1N0cmVhbTsKIAotICAgIHNpemVfdCBuID0gbV9lbGVtZW50cy5zaXplKCk7Ci0gICAgZm9y
bURhdGEtPm1fZWxlbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQm
IGUgPSBtX2VsZW1lbnRzW2ldOwotICAgICAgICBzd2l0Y2ggKGUubV90eXBlKSB7CisgICAgZm9y
bURhdGEtPm1fZWxlbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VsZW1lbnRzLnNpemUo
KSk7CisgICAgZm9yIChjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRz
KSB7CisgICAgICAgIHN3aXRjaCAoZWxlbWVudC5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBGb3Jt
RGF0YUVsZW1lbnQ6OmRhdGE6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNo
ZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV9kYXRhKSk7CisgICAgICAgICAgICBmb3Jt
RGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGVsZW1lbnQu
bV9kYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1l
bnQ6OmVuY29kZWRGaWxlOgogI2lmIEVOQUJMRShCTE9CKQotICAgICAgICAgICAgZm9ybURhdGEt
Pm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fZmlsZW5hbWUs
IGUubV9maWxlU3RhcnQsIGUubV9maWxlTGVuZ3RoLCBlLm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSwgZS5tX3Nob3VsZEdlbmVyYXRlRmlsZSkpOworICAgICAgICAgICAgZm9ybURhdGEt
Pm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlbGVtZW50Lm1fZmls
ZW5hbWUsIGVsZW1lbnQubV9maWxlU3RhcnQsIGVsZW1lbnQubV9maWxlTGVuZ3RoLCBlbGVtZW50
Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRl
RmlsZSkpOwogI2Vsc2UKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tl
ZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5tX2ZpbGVuYW1lLCBlLm1fc2hvdWxkR2VuZXJhdGVG
aWxlKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQo
Rm9ybURhdGFFbGVtZW50KGVsZW1lbnQubV9maWxlbmFtZSwgZWxlbWVudC5tX3Nob3VsZEdlbmVy
YXRlRmlsZSkpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQkxPQikK
ICAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOgotICAgICAgICAgICAg
Zm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1f
dXJsKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQo
Rm9ybURhdGFFbGVtZW50KGVsZW1lbnQubV91cmwpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgICAgIH0KQEAgLTM2Nyw0MiArMzYxLDU2IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IEZvcm1EYXRhOjpyZXNvbHZlQmwKIAogdm9pZCBGb3JtRGF0YTo6Z2VuZXJhdGVGaWxlcyhEb2N1
bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0dlbmVyYXRlZEZpbGVzKTsKLQot
ICAgIGlmIChtX2hhc0dlbmVyYXRlZEZpbGVzKQotICAgICAgICByZXR1cm47Ci0KICAgICBQYWdl
KiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNpemVfdCBuID0gbV9lbGVtZW50cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgRm9ybURhdGFFbGVtZW50JiBlID0gbV9lbGVt
ZW50c1tpXTsKLSAgICAgICAgaWYgKGUubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2Rl
ZEZpbGUgJiYgZS5tX3Nob3VsZEdlbmVyYXRlRmlsZSkgewotICAgICAgICAgICAgZS5tX2dlbmVy
YXRlZEZpbGVuYW1lID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZ2VuZXJhdGVSZXBsYWNlbWVu
dEZpbGUoZS5tX2ZpbGVuYW1lKTsKLSAgICAgICAgICAgIG1faGFzR2VuZXJhdGVkRmlsZXMgPSB0
cnVlOworICAgIGZvciAoRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogbV9lbGVtZW50cykgewor
ICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmls
ZSAmJiBlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlKSB7CisgICAgICAgICAgICBBU1NFUlQo
IWVsZW1lbnQubV9vd25zR2VuZXJhdGVkRmlsZSk7CisgICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC5tX2dlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAoIWVsZW1l
bnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5nZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShlbGVtZW50Lm1fZmlsZW5hbWUp
OworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGVsZW1lbnQubV9vd25zR2VuZXJhdGVkRmlsZSA9IHRydWU7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgRm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVz
SWZOZWVkZWQoKQorYm9vbCBGb3JtRGF0YTo6aGFzR2VuZXJhdGVkRmlsZXMoKSBjb25zdAogewot
ICAgIGlmICghbV9oYXNHZW5lcmF0ZWRGaWxlcykKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAo
Y29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogbV9lbGVtZW50cykgeworICAgICAgICBp
ZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSAmJiAhZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBzaXplX3QgbiA9IG1fZWxl
bWVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAg
ICAgIEZvcm1EYXRhRWxlbWVudCYgZSA9IG1fZWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChlLm1f
dHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlICYmICFlLm1fZ2VuZXJhdGVkRmls
ZW5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZS5tX3Nob3VsZEdlbmVyYXRl
RmlsZSk7Ci0gICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShlLm1f
Z2VuZXJhdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAgZGVsZXRlRmlsZShlLm1fZ2VuZXJhdGVk
RmlsZW5hbWUpOworYm9vbCBGb3JtRGF0YTo6aGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0
Cit7CisgICAgZm9yIChjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRz
KSB7CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29k
ZWRGaWxlICYmIGVsZW1lbnQubV9vd25zR2VuZXJhdGVkRmlsZSkgeworICAgICAgICAgICAgQVNT
RVJUKCFlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpCit7CisgICAgZm9y
IChGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CisgICAgICAgIGlmIChl
bGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlICYmIGVsZW1lbnQu
bV9vd25zR2VuZXJhdGVkRmlsZSkgeworICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50Lm1fZ2Vu
ZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlKTsKKyAgICAgICAgICAgIFN0cmluZyBkaXJlY3RvcnkgPSBkaXJl
Y3RvcnlOYW1lKGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSk7CisgICAgICAgICAgICBkZWxl
dGVGaWxlKGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICBkZWxldGVF
bXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOwotICAgICAgICAgICAgZS5tX2dlbmVyYXRlZEZpbGVu
YW1lID0gU3RyaW5nKCk7CisgICAgICAgICAgICBlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUg
PSBTdHJpbmcoKTsKKyAgICAgICAgICAgIGVsZW1lbnQubV9vd25zR2VuZXJhdGVkRmlsZSA9IGZh
bHNlOwogICAgICAgICB9CiAgICAgfQotICAgIG1faGFzR2VuZXJhdGVkRmlsZXMgPSBmYWxzZTsK
IH0KIAogc3RhdGljIHZvaWQgZW5jb2RlRWxlbWVudChFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBG
b3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCkBAIC01NDcsNyArNTU1LDcgQEAgdm9pZCBGb3JtRGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQogICAgICAgICBlbmNvZGVFbGVtZW50KGVuY29kZXIsIG1fZWxlbWVudHNbaV0p
OwogCi0gICAgZW5jb2Rlci5lbmNvZGVCb29sKG1faGFzR2VuZXJhdGVkRmlsZXMpOworICAgIGVu
Y29kZXIuZW5jb2RlQm9vbChoYXNHZW5lcmF0ZWRGaWxlcygpKTsgLy8gRm9yIGJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5LgogCiAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChtX2lkZW50aWZpZXIpOwog
fQpAQCAtNTYxLDcgKzU2OSw2IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShLZXllZEVuY29kZXIm
IGVuY28KICAgICAgICAgZW5jb2RlRWxlbWVudChlbmNvZGVyLCBlbGVtZW50KTsKICAgICB9KTsK
IAotICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFzR2VuZXJhdGVkRmlsZXMiLCBtX2hhc0dlbmVy
YXRlZEZpbGVzKTsKICAgICBlbmNvZGVyLmVuY29kZUludDY0KCJpZGVudGlmaWVyIiwgbV9pZGVu
dGlmaWVyKTsKIH0KIApAQCAtNTg5LDcgKzU5Niw4IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZv
cm1EYXRhOjpkZWNvZGUoRGUKICAgICAgICAgZGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoZWxlbWVu
dCk7CiAgICAgfQogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woZGF0YS0+bV9oYXNHZW5l
cmF0ZWRGaWxlcykpCisgICAgYm9vbCBkdW1teTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9v
bChkdW1teSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUlu
dDY0KGRhdGEtPm1faWRlbnRpZmllcikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiAxNjY2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwx
MCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFZlY3Rvcjxj
aGFyPiYgYXJyYXkpIDogbV90eXBlKGRhdGEpLCBtX2RhdGEoYXJyYXkpIHsgfQogCiAjaWYgRU5B
QkxFKEJMT0IpCi0gICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxv
bmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVu
Y29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSksIG1fZmlsZVN0YXJ0KGZpbGVTdGFydCks
IG1fZmlsZUxlbmd0aChmaWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShzaG91
bGRHZW5lcmF0ZUZpbGUpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91Ymxl
IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6
IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBtX2ZpbGVTdGFydChm
aWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmlsZUxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0
ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSwgbV9vd25zR2VuZXJhdGVkRmlsZShmYWxzZSkgeyB9
CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxvYlVSTCkgOiBtX3R5
cGUoZW5jb2RlZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KICNlbHNlCi0gICAgRm9ybURhdGFF
bGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6
IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBtX3Nob3VsZEdlbmVy
YXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5j
b2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hv
dWxkR2VuZXJhdGVGaWxlKSwgbV9vd25zR2VuZXJhdGVkRmlsZShmYWxzZSkgeyB9CiAjZW5kaWYK
IAogICAgIGVudW0gVHlwZSB7CkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IFN0cmluZyBtX2dlbmVyYXRlZEZpbGVuYW1lOwogICAgIGJvb2wgbV9zaG91bGRHZW5lcmF0ZUZp
bGU7CisgICAgYm9vbCBtX293bnNHZW5lcmF0ZWRGaWxlOwogfTsKIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGEsIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYg
YikKQEAgLTEwNCw5ICsxMDUsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZv
cm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2Rp
bmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBU
ZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIH5Gb3JtRGF0YSgpOworCisgICAgLy8gRklY
TUU6IEJvdGggdGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gYSBkZWVwIGNvcHkgb2YgbV9lbGVtZW50
cywgYnV0IGRpZmZlciBpbiBoYW5kbGluZyBvZiBvdGhlciBkYXRhIG1lbWJlcnMuCisgICAgLy8g
SG93IG11Y2ggb2YgdGhhdCBpcyBpbnRlbnRpb25hbD8gV2UgbmVlZCBiZXR0ZXIgbmFtZXMgdGhh
dCBleHBsYWluIHRoZSBkaWZmZXJlbmNlLgogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNvcHko
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVwQ29weSgpIGNvbnN0OwotICAg
IH5Gb3JtRGF0YSgpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHZv
aWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OwpAQCAtMTYyLDEwICsxNjYsMTIgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgYXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFM
aXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50
KiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOwogCisgICAgYm9vbCBoYXNHZW5lcmF0
ZWRGaWxlcygpIGNvbnN0OworICAgIGJvb2wgaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0
OworCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIAogICAgIGludDY0
X3QgbV9pZGVudGlmaWVyOwotICAgIGJvb2wgbV9oYXNHZW5lcmF0ZWRGaWxlczsKICAgICBib29s
IG1fYWx3YXlzU3RyZWFtOwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwogICAgIGJvb2wg
bV9jb250YWluc1Bhc3N3b3JkRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjY3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTA0LTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIFNhbmRib3ggdmlvbGF0aW9uIGluIE5ldHdvcmtQcm9jZXNzIHdoZW4gdXBsb2FkaW5n
IGEgYnVuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzExMzMKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXApOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAg
RG9uJ3QgZGVsZXRlIHRoZSBmaWxlcy4gSXQncyBjYW4ndCB3b3JrLgorCiAyMDE0LTA0LTAyICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9jdW1lbnQg
V0tVSURlbGVnYXRlIGFuZCBXS1dpbmRvd0ZlYXR1cmVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDE2NjY2MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw5ICsxNDEsNiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cCgpCiAKICAgICBpbnZhbGlkYXRlU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAotICAgIGlmIChGb3JtRGF0YSogZm9ybURhdGEgPSByZXF1ZXN0KCku
aHR0cEJvZHkoKSkKLSAgICAgICAgZm9ybURhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVk
ZWQoKTsKLQogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciBhYm91dCB0aGlzIGZpbmlzaGVkIGxv
YWRlciBzb29uIHNvIGl0IGNhbiBzdGFydCBtb3JlIG5ldHdvcmsgcmVxdWVzdHMuCiAgICAgTmV0
d29ya1Byb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS5zY2hl
ZHVsZVJlbW92ZUxvYWRlcih0aGlzKTsKIApAQCAtMTc1LDEwICsxNzIsNiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5k
bGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKLSAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3Mp
OiBDYWNoZSB0aGUgcmVzcG9uc2UuCi0gICAgaWYgKEZvcm1EYXRhKiBmb3JtRGF0YSA9IHJlcXVl
c3QoKS5odHRwQm9keSgpKQotICAgICAgICBmb3JtRGF0YS0+cmVtb3ZlR2VuZXJhdGVkRmlsZXNJ
Zk5lZWRlZCgpOwotCiAgICAgbV9uZXR3b3JrTG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UodGhpcywgcmVzcG9uc2UpOwogCiAgICAgLy8gbV9oYW5kbGUgd2lsbCBiZSAwIGlmIHRoZSBy
ZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228463</attachid>
            <date>2014-04-02 22:21:41 -0700</date>
            <delta_ts>2014-04-02 22:59:56 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>DeleteBundle.txt</filename>
            <type>text/plain</type>
            <size>14388</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA0LTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFNhbmRib3ggdmlvbGF0aW9u
IGluIE5ldHdvcmtQcm9jZXNzIHdoZW4gdXBsb2FkaW5nIGEgYnVuZGxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgVHJhY2sgZ2VuZXJhdGVkIGZpbGUgb3du
ZXJzaGlwIGV4cGxpY2l0bHksIHNvIHRoYXQgZWFjaCBjb3B5IG9mIEZvcm1EYXRhIHdvdWxkIGtu
b3cKKyAgICAgICAgd2hldGhlciB0byBkZWxldGUgdGhlIGZpbGUuCisKKyAgICAgICAgVGhpcyBw
YXJ0IGlzIG5lZWRlZCB0byBwcmV2ZW50IGFzc2VydGluZyBpbiBGb3JtRGF0YSBkZXN0cnVjdG9y
IGluIE5ldHdvcmtQcm9jZXNzLAorICAgICAgICBiZWNhdXNlIGl0IGRvZXNuJ3QgZGVsZXRlIHRo
ZSBmaWxlcy4gQWxzbywgc29tZSBjbGVhbnVwLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
IERvbid0IGV4cG9ydCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpLCBX
ZWJLaXQyCisgICAgICAgIGRvZXNuJ3QgbmVlZCBpdCBhbnkgbW9yZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDogUmVtb3ZlZCBtX2hhc0dlbmVyYXRlZEZpbGVzLiBU
aGVyZSBpcyBubyBwcm9ibGVtCisgICAgICAgIGl0ZXJhdGluZyBvdmVyIEZvcm1EYXRhRWxlbWVu
dHMgdG8gY29tcHV0ZSBpdCwgYW5kIHRoYXQncyBtb3JlIHJvYnVzdCB3aGVuIEZvcm1EYXRhcwor
ICAgICAgICBhcmUgcGFzc2VkIG9yIHN0b3JlZCBvbiBkaXNrIHBlcm1hbmVudGx5LgorICAgICAg
ICBVcGRhdGVkIHRvdWNoZWQgZnVuY3Rpb25zIHRvIHVzZSBDKysgaXRlcmF0aW9uLCBhbmQgcmVu
YW1lZCAiZSIgdG8gImVsZW1lbnQiLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmVuY29k
ZSk6IEtlZXAgZW5jb2RpbmcgYSBib29sZWFuIGZvciBoYXNHZW5lcmF0ZWRGaWxlcywgYmVjYXVz
ZQorICAgICAgICB0aGUgZW5jb2RlZCBGb3JtRGF0YSBjYW4gYmUgc3RvcmVkIHBlcnNpdGVudGx5
LCBhbmQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBmb3JtYXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmg6IChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkZvcm1EYXRhRWxl
bWVudCk6CisgICAgICAgIEFkZGVkIG1fb3duc0dlbmVyYXRlZEZpbGUuIEZvcm1EYXRhIHdpbGwg
b25seSBkZWxldGUgZmlsZXMgaXQgb3ducy4gU2luY2UgZmlsZXMKKyAgICAgICAgYXJlIGdlbmVy
YXRlZCBpbW1lZGlhdGVseSBiZWZvcmUgZm9ybSBzdWJtaXNzaW9uLCBpdCdzIGFsd2F5cyB0aGUg
Rm9ybURhdGEgYmVpbmcKKyAgICAgICAgc3VibWl0dGVkIHRoYXQgb3ducyB0aGUgZ2VuZXJhdGVk
IGZpbGVzLgorCiAyMDE0LTA0LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMb2FkIE1lZGlhIENvbnRyb2xzIGpzL2NzcyBmcm9tIGJ1bmRsZQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2NjY2MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM0LDcgKzEyMzQsNiBAQCBfX1pON1dlYkNv
cmU4RG9jdW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0V2CiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQ0aGVhZEV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQ4aWNvblVSTHNFaQotX19aTjdXZWJDb3Jl
OEZvcm1EYXRhMjhyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkRXYKIF9fWk43V2ViQ29yZThG
b3JtRGF0YTZjcmVhdGVFUEt2bQogX19aTjdXZWJDb3JlOEZvcm1EYXRhNmRlY29kZUVSTjNXVEY3
RGVjb2RlckUKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiAxNjY2NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBGb3JtRGF0
YTo6Rm9ybURhdGEoKQogICAgIDogbV9pZGVudGlmaWVyKDApCi0gICAgLCBtX2hhc0dlbmVyYXRl
ZEZpbGVzKGZhbHNlKQogICAgICwgbV9hbHdheXNTdHJlYW0oZmFsc2UpCiAgICAgLCBtX2NvbnRh
aW5zUGFzc3dvcmREYXRhKGZhbHNlKQogewpAQCAtNTQsMTggKzUzLDE1IEBAIGlubGluZSBGb3Jt
RGF0YTo6Rm9ybURhdGEoY29uc3QgRm9ybURhdGEKICAgICA6IFJlZkNvdW50ZWQ8Rm9ybURhdGE+
KCkKICAgICAsIG1fZWxlbWVudHMoZGF0YS5tX2VsZW1lbnRzKQogICAgICwgbV9pZGVudGlmaWVy
KGRhdGEubV9pZGVudGlmaWVyKQotICAgICwgbV9oYXNHZW5lcmF0ZWRGaWxlcyhmYWxzZSkKICAg
ICAsIG1fYWx3YXlzU3RyZWFtKGZhbHNlKQogICAgICwgbV9jb250YWluc1Bhc3N3b3JkRGF0YShk
YXRhLm1fY29udGFpbnNQYXNzd29yZERhdGEpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IGJlIGNv
cHlpbmcgRm9ybURhdGEgdGhhdCBoYXNuJ3QgYWxyZWFkeSByZW1vdmVkIGl0cyBnZW5lcmF0ZWQg
ZmlsZXMKICAgICAvLyBidXQganVzdCBpbiBjYXNlLCBtYWtlIHN1cmUgdGhlIG5ldyBGb3JtRGF0
YSBpcyByZWFkeSB0byBnZW5lcmF0ZSBpdHMgb3duIGZpbGVzLgotICAgIGlmIChkYXRhLm1faGFz
R2VuZXJhdGVkRmlsZXMpIHsKLSAgICAgICAgc2l6ZV90IG4gPSBtX2VsZW1lbnRzLnNpemUoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIEZv
cm1EYXRhRWxlbWVudCYgZSA9IG1fZWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoZS5tX3R5
cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkKLSAgICAgICAgICAgICAgICBlLm1f
Z2VuZXJhdGVkRmlsZW5hbWUgPSBTdHJpbmcoKTsKKyAgICBmb3IgKEZvcm1EYXRhRWxlbWVudCYg
ZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZv
cm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAgICAgIGVsZW1lbnQubV9nZW5l
cmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOworICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5l
cmF0ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NCw3ICs3MCw3IEBA
IEZvcm1EYXRhOjp+Rm9ybURhdGEoKQogewogICAgIC8vIFRoaXMgY2xlYW51cCBzaG91bGQndmUg
aGFwcGVuZWQgd2hlbiB0aGUgZm9ybSBzdWJtaXNzaW9uIGZpbmlzaGVkLgogICAgIC8vIEp1c3Qg
aW4gY2FzZSwgbGV0J3MgYXNzZXJ0LCBhbmQgZG8gdGhlIGNsZWFudXAgYW55d2F5IGluIHJlbGVh
c2UgYnVpbGRzLgotICAgIEFTU0VSVCghbV9oYXNHZW5lcmF0ZWRGaWxlcyk7CisgICAgQVNTRVJU
KCFoYXNPd25lZEdlbmVyYXRlZEZpbGVzKCkpOwogICAgIHJlbW92ZUdlbmVyYXRlZEZpbGVzSWZO
ZWVkZWQoKTsKIH0KIApAQCAtMTI5LDI0ICsxMjUsMjIgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmRlZXBDb3B5KAogCiAgICAgZm9ybURhdGEtPm1fYWx3YXlzU3RyZWFtID0gbV9h
bHdheXNTdHJlYW07CiAKLSAgICBzaXplX3QgbiA9IG1fZWxlbWVudHMuc2l6ZSgpOwotICAgIGZv
cm1EYXRhLT5tX2VsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobik7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50
JiBlID0gbV9lbGVtZW50c1tpXTsKLSAgICAgICAgc3dpdGNoIChlLm1fdHlwZSkgeworICAgIGZv
cm1EYXRhLT5tX2VsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbGVtZW50cy5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogbV9lbGVtZW50
cykgeworICAgICAgICBzd2l0Y2ggKGVsZW1lbnQubV90eXBlKSB7CiAgICAgICAgIGNhc2UgRm9y
bURhdGFFbGVtZW50OjpkYXRhOgotICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5j
aGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fZGF0YSkpOworICAgICAgICAgICAgZm9y
bURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlbGVtZW50
Lm1fZGF0YSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRm9ybURhdGFFbGVt
ZW50OjplbmNvZGVkRmlsZToKICNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgICAgIGZvcm1EYXRh
LT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5tX2ZpbGVuYW1l
LCBlLm1fZmlsZVN0YXJ0LCBlLm1fZmlsZUxlbmd0aCwgZS5tX2V4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUsIGUubV9zaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICAgICAgICAgIGZvcm1EYXRh
LT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX2Zp
bGVuYW1lLCBlbGVtZW50Lm1fZmlsZVN0YXJ0LCBlbGVtZW50Lm1fZmlsZUxlbmd0aCwgZWxlbWVu
dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGVsZW1lbnQubV9zaG91bGRHZW5lcmF0
ZUZpbGUpKTsKICNlbHNlCi0gICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNr
ZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV9maWxlbmFtZSwgZS5tX3Nob3VsZEdlbmVyYXRl
RmlsZSkpOworICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5k
KEZvcm1EYXRhRWxlbWVudChlbGVtZW50Lm1fZmlsZW5hbWUsIGVsZW1lbnQubV9zaG91bGRHZW5l
cmF0ZUZpbGUpKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKEJMT0Ip
CiAgICAgICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYjoKLSAgICAgICAgICAg
IGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5t
X3VybCkpOworICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5k
KEZvcm1EYXRhRWxlbWVudChlbGVtZW50Lm1fdXJsKSk7CiAgICAgICAgICAgICBicmVhazsKICNl
bmRpZgogICAgICAgICB9CkBAIC0zNjcsNDIgKzM2MSw1NiBAQCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6cmVzb2x2ZUJsCiAKIHZvaWQgRm9ybURhdGE6OmdlbmVyYXRlRmlsZXMoRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIEFTU0VSVCghbV9oYXNHZW5lcmF0ZWRGaWxlcyk7Ci0K
LSAgICBpZiAobV9oYXNHZW5lcmF0ZWRGaWxlcykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUGFn
ZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzaXplX3QgbiA9IG1fZWxlbWVudHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgIEZvcm1EYXRhRWxlbWVudCYgZSA9IG1fZWxl
bWVudHNbaV07Ci0gICAgICAgIGlmIChlLm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29k
ZWRGaWxlICYmIGUubV9zaG91bGRHZW5lcmF0ZUZpbGUpIHsKLSAgICAgICAgICAgIGUubV9nZW5l
cmF0ZWRGaWxlbmFtZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmdlbmVyYXRlUmVwbGFjZW1l
bnRGaWxlKGUubV9maWxlbmFtZSk7Ci0gICAgICAgICAgICBtX2hhc0dlbmVyYXRlZEZpbGVzID0g
dHJ1ZTsKKyAgICBmb3IgKEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
KyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZp
bGUgJiYgZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSkgeworICAgICAgICAgICAgQVNTRVJU
KCFlbGVtZW50Lm1fb3duc0dlbmVyYXRlZEZpbGUpOworICAgICAgICAgICAgQVNTRVJUKGVsZW1l
bnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgaWYgKCFlbGVt
ZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lID0gcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoZWxlbWVudC5tX2ZpbGVuYW1l
KTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBlbGVtZW50Lm1fb3duc0dlbmVyYXRlZEZpbGUgPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxl
c0lmTmVlZGVkKCkKK2Jvb2wgRm9ybURhdGE6Omhhc0dlbmVyYXRlZEZpbGVzKCkgY29uc3QKIHsK
LSAgICBpZiAoIW1faGFzR2VuZXJhdGVkRmlsZXMpCi0gICAgICAgIHJldHVybjsKKyAgICBmb3Ig
KGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKKyAgICAgICAg
aWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUgJiYgIWVs
ZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgc2l6ZV90IG4gPSBtX2Vs
ZW1lbnRzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAg
ICAgICBGb3JtRGF0YUVsZW1lbnQmIGUgPSBtX2VsZW1lbnRzW2ldOwotICAgICAgICBpZiAoZS5t
X3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSAmJiAhZS5tX2dlbmVyYXRlZEZp
bGVuYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQVNTRVJUKGUubV9zaG91bGRHZW5lcmF0
ZUZpbGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZS5t
X2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZS5tX2dlbmVyYXRl
ZEZpbGVuYW1lKTsKK2Jvb2wgRm9ybURhdGE6Omhhc093bmVkR2VuZXJhdGVkRmlsZXMoKSBjb25z
dAoreworICAgIGZvciAoY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogbV9lbGVtZW50
cykgeworICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNv
ZGVkRmlsZSAmJiBlbGVtZW50Lm1fb3duc0dlbmVyYXRlZEZpbGUpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgRm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKQoreworICAgIGZv
ciAoRm9ybURhdGFFbGVtZW50JiBlbGVtZW50IDogbV9lbGVtZW50cykgeworICAgICAgICBpZiAo
ZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSAmJiBlbGVtZW50
Lm1fb3duc0dlbmVyYXRlZEZpbGUpIHsKKyAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudC5tX2dl
bmVyYXRlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC5t
X3Nob3VsZEdlbmVyYXRlRmlsZSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gZGly
ZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgZGVs
ZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOwogICAgICAgICAgICAgZGVsZXRl
RW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKLSAgICAgICAgICAgIGUubV9nZW5lcmF0ZWRGaWxl
bmFtZSA9IFN0cmluZygpOworICAgICAgICAgICAgZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1l
ID0gU3RyaW5nKCk7CisgICAgICAgICAgICBlbGVtZW50Lm1fb3duc0dlbmVyYXRlZEZpbGUgPSBm
YWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2hhc0dlbmVyYXRlZEZpbGVzID0gZmFsc2U7
CiB9CiAKIHN0YXRpYyB2b2lkIGVuY29kZUVsZW1lbnQoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
Rm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQpAQCAtNTQ3LDcgKzU1NSw3IEBAIHZvaWQgRm9ybURh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgZW5jb2RlRWxlbWVudChlbmNvZGVyLCBtX2VsZW1lbnRzW2ld
KTsKIAotICAgIGVuY29kZXIuZW5jb2RlQm9vbChtX2hhc0dlbmVyYXRlZEZpbGVzKTsKKyAgICBl
bmNvZGVyLmVuY29kZUJvb2woaGFzR2VuZXJhdGVkRmlsZXMoKSk7IC8vIEZvciBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5LgogCiAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChtX2lkZW50aWZpZXIpOwog
fQpAQCAtNTYxLDcgKzU2OSw2IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShLZXllZEVuY29kZXIm
IGVuY28KICAgICAgICAgZW5jb2RlRWxlbWVudChlbmNvZGVyLCBlbGVtZW50KTsKICAgICB9KTsK
IAotICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFzR2VuZXJhdGVkRmlsZXMiLCBtX2hhc0dlbmVy
YXRlZEZpbGVzKTsKICAgICBlbmNvZGVyLmVuY29kZUludDY0KCJpZGVudGlmaWVyIiwgbV9pZGVu
dGlmaWVyKTsKIH0KIApAQCAtNTg5LDcgKzU5Niw4IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZv
cm1EYXRhOjpkZWNvZGUoRGUKICAgICAgICAgZGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoZWxlbWVu
dCk7CiAgICAgfQogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woZGF0YS0+bV9oYXNHZW5l
cmF0ZWRGaWxlcykpCisgICAgYm9vbCBkdW1teTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9v
bChkdW1teSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUlu
dDY0KGRhdGEtPm1faWRlbnRpZmllcikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiAxNjY2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwx
MCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFZlY3Rvcjxj
aGFyPiYgYXJyYXkpIDogbV90eXBlKGRhdGEpLCBtX2RhdGEoYXJyYXkpIHsgfQogCiAjaWYgRU5B
QkxFKEJMT0IpCi0gICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxv
bmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVu
Y29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSksIG1fZmlsZVN0YXJ0KGZpbGVTdGFydCks
IG1fZmlsZUxlbmd0aChmaWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShzaG91
bGRHZW5lcmF0ZUZpbGUpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91Ymxl
IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6
IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBtX2ZpbGVTdGFydChm
aWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmlsZUxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0
ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSwgbV9vd25zR2VuZXJhdGVkRmlsZShmYWxzZSkgeyB9
CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxvYlVSTCkgOiBtX3R5
cGUoZW5jb2RlZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KICNlbHNlCi0gICAgRm9ybURhdGFF
bGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6
IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBtX3Nob3VsZEdlbmVy
YXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5j
b2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hv
dWxkR2VuZXJhdGVGaWxlKSwgbV9vd25zR2VuZXJhdGVkRmlsZShmYWxzZSkgeyB9CiAjZW5kaWYK
IAogICAgIGVudW0gVHlwZSB7CkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IFN0cmluZyBtX2dlbmVyYXRlZEZpbGVuYW1lOwogICAgIGJvb2wgbV9zaG91bGRHZW5lcmF0ZUZp
bGU7CisgICAgYm9vbCBtX293bnNHZW5lcmF0ZWRGaWxlOwogfTsKIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGEsIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYg
YikKQEAgLTEwNCw5ICsxMDUsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZv
cm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2Rp
bmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBU
ZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIH5Gb3JtRGF0YSgpOworCisgICAgLy8gRklY
TUU6IEJvdGggdGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gYSBkZWVwIGNvcHkgb2YgbV9lbGVtZW50
cywgYnV0IGRpZmZlciBpbiBoYW5kbGluZyBvZiBvdGhlciBkYXRhIG1lbWJlcnMuCisgICAgLy8g
SG93IG11Y2ggb2YgdGhhdCBpcyBpbnRlbnRpb25hbD8gV2UgbmVlZCBiZXR0ZXIgbmFtZXMgdGhh
dCBleHBsYWluIHRoZSBkaWZmZXJlbmNlLgogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNvcHko
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVwQ29weSgpIGNvbnN0OwotICAg
IH5Gb3JtRGF0YSgpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHZv
aWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OwpAQCAtMTYyLDEwICsxNjYsMTIgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgYXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFM
aXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50
KiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOwogCisgICAgYm9vbCBoYXNHZW5lcmF0
ZWRGaWxlcygpIGNvbnN0OworICAgIGJvb2wgaGFzT3duZWRHZW5lcmF0ZWRGaWxlcygpIGNvbnN0
OworCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIAogICAgIGludDY0
X3QgbV9pZGVudGlmaWVyOwotICAgIGJvb2wgbV9oYXNHZW5lcmF0ZWRGaWxlczsKICAgICBib29s
IG1fYWx3YXlzU3RyZWFtOwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwogICAgIGJvb2wg
bV9jb250YWluc1Bhc3N3b3JkRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjY3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTA0LTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIFNhbmRib3ggdmlvbGF0aW9uIGluIE5ldHdvcmtQcm9jZXNzIHdoZW4gdXBsb2FkaW5n
IGEgYnVuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzExMzMKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXApOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAg
RG9uJ3QgZGVsZXRlIHRoZSBmaWxlcy4gSXQgY2FuJ3Qgd29yay4KKwogMjAxNC0wNC0wMiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERvY3VtZW50IFdL
VUlEZWxlZ2F0ZSBhbmQgV0tXaW5kb3dGZWF0dXJlcwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAxNjY2NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsOSArMTQxLDYgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoKQogCiAgICAgaW52YWxpZGF0ZVNhbmRib3hF
eHRlbnNpb25zKCk7CiAKLSAgICBpZiAoRm9ybURhdGEqIGZvcm1EYXRhID0gcmVxdWVzdCgpLmh0
dHBCb2R5KCkpCi0gICAgICAgIGZvcm1EYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVk
KCk7Ci0KICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgYWJvdXQgdGhpcyBmaW5pc2hlZCBsb2Fk
ZXIgc29vbiBzbyBpdCBjYW4gc3RhcnQgbW9yZSBuZXR3b3JrIHJlcXVlc3RzLgogICAgIE5ldHdv
cmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCkuc2NoZWR1
bGVSZW1vdmVMb2FkZXIodGhpcyk7CiAKQEAgLTE3NSwxMCArMTcyLDYgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCBoYW5kbGUgPT0gbV9oYW5kbGUpOwogCi0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
Q2FjaGUgdGhlIHJlc3BvbnNlLgotICAgIGlmIChGb3JtRGF0YSogZm9ybURhdGEgPSByZXF1ZXN0
KCkuaHR0cEJvZHkoKSkKLSAgICAgICAgZm9ybURhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZO
ZWVkZWQoKTsKLQogICAgIG1fbmV0d29ya0xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHRoaXMsIHJlc3BvbnNlKTsKIAogICAgIC8vIG1faGFuZGxlIHdpbGwgYmUgMCBpZiB0aGUgcmVx
dWVzdCBnb3QgYWJvcnRlZCBhYm92ZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>