<?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>112469</bug_id>
          
          <creation_ts>2013-03-15 14:58:40 -0700</creation_ts>
          <short_desc>Reduce amount of platform specific code in MessagePortChannel</short_desc>
          <delta_ts>2013-03-15 16:42:57 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>dglazkov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856311</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 14:58:40 -0700</bug_when>
    <thetext>MessagePortChannel and PlatformMessagePortChannel classes are both implemented in forked files. MessagePortChannel doesn&apos;t have any logic of its own, so there is no reason to complicate the code by having these separate.

This patch reduces the amount of calling through layers, making PlatformMessagePortChannel more of a data object, akin to ResourceHandleData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856316</commentid>
    <comment_count>1</comment_count>
      <attachid>193377</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 15:02:07 -0700</bug_when>
    <thetext>Created attachment 193377
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856332</commentid>
    <comment_count>2</comment_count>
      <attachid>193377</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 15:17:19 -0700</bug_when>
    <thetext>Comment on attachment 193377
proposed patch

Attachment 193377 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17118287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856342</commentid>
    <comment_count>3</comment_count>
      <attachid>193377</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 15:24:26 -0700</bug_when>
    <thetext>Comment on attachment 193377
proposed patch

Attachment 193377 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17145314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856353</commentid>
    <comment_count>4</comment_count>
      <attachid>193377</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-15 15:42:59 -0700</bug_when>
    <thetext>Comment on attachment 193377
proposed patch

Attachment 193377 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17222123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856355</commentid>
    <comment_count>5</comment_count>
      <attachid>193387</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 15:50:02 -0700</bug_when>
    <thetext>Created attachment 193387
proposed patch

Ok, ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856400</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 16:42:57 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/145965&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193377</attachid>
            <date>2013-03-15 15:02:07 -0700</date>
            <delta_ts>2013-03-15 15:50:02 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>MoveCode.txt</filename>
            <type>text/plain</type>
            <size>14820</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTk0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTE1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBhbW91bnQgb2Yg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZSBpbiBNZXNzYWdlUG9ydENoYW5uZWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hh
bm5lbC5oOiBSZW1vdmVkIGFuIHVudXNlZCBjaGFubmVsKCkgZnVuY3Rpb24uIFdlIGNlcnRhaW5s
eQorICAgICAgICBkb24ndCB3YW50IHRvIGV4cG9zZSB0aGlzIGltcGxlbWVudGF0aW9uIGRldGFp
bCBhcyBhIHB1YmxpYyBmdW5jdGlvbi4KKworICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmg6IFJlbW92ZWQgZnVuY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdl
cgorICAgICAgICBkZWxlZ2F0ZWQuIE1hZGUgY2xhc3MgY29udGVudHMgYWxsIHB1YmxpYywgYXMg
aXQncyBub3cgYmFzaWNhbGx5IGEgZGF0YSBzdG9yYWdlCisgICAgICAgIGZvciBNZXNzYWdlUG9y
dENoYW5uZWwuCisKKyAgICAgICAgKiBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNo
YW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp+TWVzc2FnZVBv
cnRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZW50YW5n
bGVJZk9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpkaXNlbnRh
bmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdl
VG9SZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRN
ZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6aXNDb25uZWN0
ZWRUbyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmxvY2FsbHlF
bnRhbmdsZWRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZW50YW5nbGVkQ2hhbm5lbCk6CisgICAgICAgIE1vdmVk
IGNvZGUgZnJvbSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBNZXNzYWdlUG9ydENoYW5u
ZWwuIEFkZGVkIHNvbWUKKyAgICAgICAgRklYTUVzLgorCiAyMDEzLTAzLTE1ICBSb3VzbGFuIFNv
bG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2Vk
IHVuaWZpZWQgdGV4dGNoZWNrZXIgdmFyaWFibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE0NTkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydENoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDggKzEwMiw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB+TWVzc2FnZVBvcnRDaGFubmVsKCk7CiAK
LSAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIGNoYW5uZWwoKSBjb25zdCB7IHJl
dHVybiBtX2NoYW5uZWwuZ2V0KCk7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
Pik7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFubmVs
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAkocmV2aXNpb24gMTQ1OTE3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTM2LDEwICszNywyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIE1lc3Nh
Z2VQb3J0Q2hhbm5lbCBpbXBsZW1lbnRhdGlvbnMgLSBqdXN0IGRlbGVnYXRlIHRvIHRoZSBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC4KIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGVD
aGFubmVsKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQxLCBQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0MikKIHsKLSAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hh
bm5lbChwb3J0MSwgcG9ydDIpOworICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bDo6TWVzc2FnZVBvcnRRdWV1ZT4gcXVldWUxID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
Ok1lc3NhZ2VQb3J0UXVldWU6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRRdWV1ZT4gcXVldWUyID0gUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU6OmNyZWF0ZSgpOworCisgICAgLy8gQ3JlYXRlIHBy
b3hpZXMgZm9yIGVhY2ggZW5kcG9pbnQuCisgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPiBjaGFubmVsMSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocXVl
dWUxLCBxdWV1ZTIpOworICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hh
bm5lbDIgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMiwgcXVldWUx
KTsKKworICAgIC8vIEVudGFuZ2xlIHRoZSB0d28gZW5kcG9pbnRzLgorICAgIGNoYW5uZWwxLT5t
X2VudGFuZ2xlZENoYW5uZWwgPSBjaGFubmVsMjsKKyAgICBjaGFubmVsMi0+bV9lbnRhbmdsZWRD
aGFubmVsID0gY2hhbm5lbDE7CisKKyAgICAvLyBOb3cgZW50YW5nbGUgdGhlIHByb3hpZXMgd2l0
aCB0aGUgYXBwcm9wcmlhdGUgbG9jYWwgcG9ydHMuCisgICAgcG9ydDEtPmVudGFuZ2xlKE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwyKSk7CisgICAgcG9ydDItPmVudGFuZ2xlKE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwxKSk7CiB9CiAKIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShQYXNzUmVmUHRyPFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQpAQCAtNTUsNDcgKzY4LDc5IEBAIE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRDaGFubmVsKFAKIE1lc3NhZ2VQb3J0Q2hhbm5l
bDo6fk1lc3NhZ2VQb3J0Q2hhbm5lbCgpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlIGNsb3NlIG91
ciBwbGF0Zm9ybSBjaGFubmVsIHdoZW4gdGhlIGJhc2UgaXMgZnJlZWQsIHRvIGtlZXAgdGhlIGNo
YW5uZWwgb2JqZWN0cyBmcm9tIGxlYWtpbmcuCi0gICAgbV9jaGFubmVsLT5jbG9zZSgpOworICAg
IGNsb3NlKCk7CiB9CiAKIGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlmT3BlbihN
ZXNzYWdlUG9ydCogcG9ydCkKIHsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5lbnRhbmdsZUlmT3Bl
bihwb3J0KTsKKyAgICAvLyBXZSBjYW4ndCBjYWxsIG1lbWJlciBmdW5jdGlvbnMgb24gb3VyIHJl
bW90ZSBwYWlyIHdoaWxlIGhvbGRpbmcgb3VyIG11dGV4IG9yIHdlJ2xsIGRlYWRsb2NrLAorICAg
IC8vIGJ1dCB3ZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgdGhlIHJlbW90ZSBwb3J0IGdldHRpbmcg
Y2xvc2VkL2ZyZWVkLCBzbyBjcmVhdGUgYSBzdGFuZGFsb25lIHJlZmVyZW5jZS4KKyAgICBSZWZQ
dHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZSA9IG1fY2hhbm5lbC0+ZW50YW5n
bGVkQ2hhbm5lbCgpOworICAgIGlmICghcmVtb3RlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmVtb3RlLT5zZXRSZW1vdGVQb3J0KHBvcnQpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQogewotICAgIG1fY2hhbm5lbC0+
ZGlzZW50YW5nbGUoKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IHJl
bW90ZSA9IG1fY2hhbm5lbC0+ZW50YW5nbGVkQ2hhbm5lbCgpOworICAgIGlmIChyZW1vdGUpCisg
ICAgICAgIHJlbW90ZS0+c2V0UmVtb3RlUG9ydCgwKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydENo
YW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YT4gbWVzc2FnZSkKIHsKLSAgICBtX2NoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1v
dGUobWVzc2FnZSk7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwor
ICAgIGlmICghbV9jaGFubmVsLT5tX291dGdvaW5nUXVldWUpCisgICAgICAgIHJldHVybjsKKyAg
ICBib29sIHdhc0VtcHR5ID0gbV9jaGFubmVsLT5tX291dGdvaW5nUXVldWUtPmFwcGVuZEFuZENo
ZWNrRW1wdHkobWVzc2FnZSk7CisgICAgaWYgKHdhc0VtcHR5ICYmIG1fY2hhbm5lbC0+bV9yZW1v
dGVQb3J0KQorICAgICAgICBtX2NoYW5uZWwtPm1fcmVtb3RlUG9ydC0+bWVzc2FnZUF2YWlsYWJs
ZSgpOwogfQogCiBib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1v
dGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiYgcmVzdWx0KQogewotICAg
IHJldHVybiBtX2NoYW5uZWwtPnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKHJlc3VsdCk7CisgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOworICAgIHJlc3VsdCA9IG1fY2hh
bm5lbC0+bV9pbmNvbWluZ1F1ZXVlLT50cnlHZXRNZXNzYWdlKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlKCkKIHsKLSAgICBtX2NoYW5u
ZWwtPmNsb3NlKCk7CisgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiByZW1v
dGUgPSBtX2NoYW5uZWwtPmVudGFuZ2xlZENoYW5uZWwoKTsKKyAgICBpZiAoIXJlbW90ZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY2hhbm5lbC0+Y2xvc2VJbnRlcm5hbCgpOworICAgIHJlbW90
ZS0+Y2xvc2VJbnRlcm5hbCgpOwogfQogCiBib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aXNDb25u
ZWN0ZWRUbyhNZXNzYWdlUG9ydCogcG9ydCkKIHsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5pc0Nv
bm5lY3RlZFRvKHBvcnQpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCB0aGUg
cmVzdWx0IHJlbWFpbnMgdGhlIHNhbWUgYWZ0ZXIgd2UgcmVsZWFzZSB0aGUgbG9jaz8KKyAgICBN
dXRleExvY2tlciBsb2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CisgICAgcmV0dXJuIG1fY2hhbm5l
bC0+bV9yZW1vdGVQb3J0ID09IHBvcnQ7CiB9CiAKIGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKQogewotICAgIHJldHVybiBtX2NoYW5uZWwtPmhhc1BlbmRpbmdB
Y3Rpdml0eSgpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVzdWx0
IHJlbWFpbnMgdGhlIHNhbWUgYWZ0ZXIgd2UgcmVsZWFzZSB0aGUgbG9jaz8KKyAgICBNdXRleExv
Y2tlciBsb2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CisgICAgcmV0dXJuICFtX2NoYW5uZWwtPm1f
aW5jb21pbmdRdWV1ZS0+aXNFbXB0eSgpOwogfQogCiBNZXNzYWdlUG9ydCogTWVzc2FnZVBvcnRD
aGFubmVsOjpsb2NhbGx5RW50YW5nbGVkUG9ydChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewotICAgIHJldHVybiBtX2NoYW5uZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0
KGNvbnRleHQpOworICAgIE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAg
ICAvLyBTZWUgaWYgYm90aCBjb250ZXh0cyBhcmUgcnVuIGJ5IHRoZSBzYW1lIHRocmVhZCAoYXJl
IHRoZSBzYW1lIGNvbnRleHQsIG9yIGFyZSBib3RoIGRvY3VtZW50cykuCisgICAgaWYgKG1fY2hh
bm5lbC0+bV9yZW1vdGVQb3J0KSB7CisgICAgICAgIC8vIFRoZSByZW1vdGUgcG9ydCdzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaXMgZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIGhlcmUgLSBNZXNz
YWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCgpCisgICAgICAgIC8vIHdpbGwgY2xvc2UgdGhlIHBv
cnQgYmVmb3JlIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgYW5kIGNsb3NlKCkgd2lsbCBibG9jayBi
ZWNhdXNlIHdlIGFyZSBob2xkaW5nIHRoZSBtdXRleC4KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogcmVtb3RlQ29udGV4dCA9IG1fY2hhbm5lbC0+bV9yZW1vdGVQb3J0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmIChyZW1vdGVDb250ZXh0ID09IGNvbnRleHQg
fHwgKHJlbW90ZUNvbnRleHQgJiYgcmVtb3RlQ29udGV4dC0+aXNEb2N1bWVudCgpICYmIGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkpCisgICAgICAgICAgICByZXR1cm4gbV9jaGFubmVsLT5tX3JlbW90
ZVBvcnQ7CisgICAgfQorICAgIHJldHVybiAwOwogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsPiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFBhc3NS
ZWZQdHI8TWVzc2FnZVBvcnRRdWV1ZT4gaW5jb21pbmcsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnRR
dWV1ZT4gb3V0Z29pbmcpCkBAIC0xMDQsOCArMTQ5LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbD4gUAogfQogCiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6UGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBpbmNv
bWluZywgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBvdXRnb2luZykKLSAgICA6IG1fZW50
YW5nbGVkQ2hhbm5lbCgwKQotICAgICwgbV9pbmNvbWluZ1F1ZXVlKGluY29taW5nKQorICAgIDog
bV9pbmNvbWluZ1F1ZXVlKGluY29taW5nKQogICAgICwgbV9vdXRnb2luZ1F1ZXVlKG91dGdvaW5n
KQogICAgICwgbV9yZW1vdGVQb3J0KDApCiB7CkBAIC0xMTUsNDIgKzE1OSw2IEBAIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjp+UGxhdGZvcm1NZXMKIHsKIH0KIAotdm9pZCBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBw
b3J0MSwgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydDIpCi17Ci0gICAgLy8gQ3JlYXRlIGlu
Y29taW5nL291dGdvaW5nIHF1ZXVlcy4KLSAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU+IHF1ZXVlMSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpNZXNzYWdlUG9ydFF1ZXVlOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8UGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU+IHF1ZXVlMiA9IFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9ydFF1ZXVlOjpjcmVhdGUoKTsKLQotICAgIC8vIENyZWF0
ZSBwcm94aWVzIGZvciBlYWNoIGVuZHBvaW50LgotICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gY2hhbm5lbDEgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRl
KHF1ZXVlMSwgcXVldWUyKTsKLSAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IGNoYW5uZWwyID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShxdWV1ZTIsIHF1
ZXVlMSk7Ci0KLSAgICAvLyBFbnRhbmdsZSB0aGUgdHdvIGVuZHBvaW50cy4KLSAgICBjaGFubmVs
MS0+c2V0RW50YW5nbGVkQ2hhbm5lbChjaGFubmVsMik7Ci0gICAgY2hhbm5lbDItPnNldEVudGFu
Z2xlZENoYW5uZWwoY2hhbm5lbDEpOwotCi0gICAgLy8gTm93IGVudGFuZ2xlIHRoZSBwcm94aWVz
IHdpdGggdGhlIGFwcHJvcHJpYXRlIGxvY2FsIHBvcnRzLgotICAgIHBvcnQxLT5lbnRhbmdsZShN
ZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShjaGFubmVsMikpOwotICAgIHBvcnQyLT5lbnRhbmds
ZShNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShjaGFubmVsMSkpOwotfQotCi1ib29sIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlmT3BlbihNZXNzYWdlUG9ydCogcG9ydCkK
LXsKLSAgICAvLyBXZSBjYW4ndCBjYWxsIG1lbWJlciBmdW5jdGlvbnMgb24gb3VyIHJlbW90ZSBw
YWlyIHdoaWxlIGhvbGRpbmcgb3VyIG11dGV4IG9yIHdlJ2xsIGRlYWRsb2NrLCBidXQgd2UgbmVl
ZCB0byBndWFyZCBhZ2FpbnN0IHRoZSByZW1vdGUgcG9ydCBnZXR0aW5nIGNsb3NlZC9mcmVlZCwg
c28gY3JlYXRlIGEgc3RhbmRhbG9uZSByZWZlcmVuY2UuCi0gICAgUmVmUHRyPFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsPiByZW1vdGUgPSBlbnRhbmdsZWRDaGFubmVsKCk7Ci0gICAgaWYgKCFy
ZW1vdGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZW1vdGUtPnNldFJlbW90ZVBvcnQo
cG9ydCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWw6OmRpc2VudGFuZ2xlKCkKLXsKLSAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWw+IHJlbW90ZSA9IGVudGFuZ2xlZENoYW5uZWwoKTsKLSAgICBpZiAocmVtb3RlKQotICAg
ICAgICByZW1vdGUtPnNldFJlbW90ZVBvcnQoMCk7Ci19Ci0KIHZvaWQgUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw6OnNldFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqIHBvcnQpCiB7CiAgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKQEAgLTE1OSw2MCArMTY3LDE1IEBAIHZvaWQgUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OnNldFJlbW8KICAgICBtX3JlbW90ZVBvcnQgPSBwb3J0Owog
fQogCi1NZXNzYWdlUG9ydCogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnJlbW90ZVBvcnQo
KQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgcmV0dXJuIG1fcmVtb3Rl
UG9ydDsKLX0KLQogUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OmVudGFuZ2xlZENoYW5uZWwoKQogeworICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVzdWx0IHJlbWFpbnMgdGhlIHNhbWUgYWZ0ZXIg
d2UgcmVsZWFzZSB0aGUgbG9jaz8KKyAgICAvLyBUaGlzIGxvY2sgb25seSBndWFyYW50ZWVzIHRo
YXQgdGhlIHJldHVybmVkIHBvaW50ZXIgd2lsbCBub3QgYmUgcG9pbnRpbmcgdG8gcmVsZWFzZWQg
bWVtb3J5LAorICAgIC8vIGJ1dCBub3QgdGhhdCBpdCB3aWxsIHN0aWxsIGJlIHBvaW50aW5nIHRv
IHRoaXMgb2JqZWN0J3MgZW50YW5nbGVkIHBvcnQgY2hhbm5lbC4KICAgICBNdXRleExvY2tlciBs
b2NrKG1fbXV0ZXgpOwogICAgIHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWw7CiB9CiAKLXZvaWQg
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnNldEVudGFuZ2xlZENoYW5uZWwoUGFzc1JlZlB0
cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlKQotewotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7Ci0gICAgLy8gU2hvdWxkIG9ubHkgYmUgc2V0IGFzIHBhcnQgb2YgaW5p
dGlhbCBjcmVhdGlvbi9lbnRhbmdsZW1lbnQuCi0gICAgaWYgKHJlbW90ZSkKLSAgICAgICAgQVNT
RVJUKCFtX2VudGFuZ2xlZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fZW50YW5nbGVkQ2hhbm5lbCA9
IHJlbW90ZTsKLX0KLQotdm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3Nh
Z2VUb1JlbW90ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBtZXNz
YWdlKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgaWYgKCFtX291dGdv
aW5nUXVldWUpCi0gICAgICAgIHJldHVybjsKLSAgICBib29sIHdhc0VtcHR5ID0gbV9vdXRnb2lu
Z1F1ZXVlLT5hcHBlbmRBbmRDaGVja0VtcHR5KG1lc3NhZ2UpOwotICAgIGlmICh3YXNFbXB0eSAm
JiBtX3JlbW90ZVBvcnQpCi0gICAgICAgIG1fcmVtb3RlUG9ydC0+bWVzc2FnZUF2YWlsYWJsZSgp
OwotfQotCi1ib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJv
bVJlbW90ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCi17
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKLSAgICByZXN1bHQgPSBtX2luY29taW5n
UXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKE1lc3NhZ2VQb3J0KiBwb3J0
KQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgcmV0dXJuIG1fcmVtb3Rl
UG9ydCA9PSBwb3J0OwotfQotCi0vLyBDbG9zZXMgdGhlIHBvcnQgc28gbm8gZnVydGhlciBtZXNz
YWdlcyBjYW4gYmUgc2VudCBmcm9tIGVpdGhlciBlbmQuCi12b2lkIFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsOjpjbG9zZSgpCi17Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPiByZW1vdGUgPSBlbnRhbmdsZWRDaGFubmVsKCk7Ci0gICAgaWYgKCFyZW1vdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjbG9zZUludGVybmFsKCk7Ci0gICAgcmVtb3RlLT5jbG9zZUludGVy
bmFsKCk7Ci19Ci0KIHZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlSW50ZXJu
YWwoKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CkBAIC0yMjIsMjMgKzE4NSw0
IEBAIHZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlSW4KICAgICBtX291dGdv
aW5nUXVldWUgPSAwOwogfQogCi1ib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAg
cmV0dXJuICFtX2luY29taW5nUXVldWUtPmlzRW1wdHkoKTsKLX0KLQotTWVzc2FnZVBvcnQqIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpsb2NhbGx5RW50YW5nbGVkUG9ydChjb25zdCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7Ci0gICAgLy8gU2VlIGlmIGJvdGggY29udGV4dHMgYXJlIHJ1biBieSB0aGUgc2FtZSB0
aHJlYWQgKGFyZSB0aGUgc2FtZSBjb250ZXh0LCBvciBhcmUgYm90aCBkb2N1bWVudHMpLgotICAg
IGlmIChtX3JlbW90ZVBvcnQpIHsKLSAgICAgICAgLy8gVGhlIHJlbW90ZSBwb3J0J3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBpcyBndWFyYW50ZWVkIG5vdCB0byBjaGFuZ2UgaGVyZSAtIE1lc3Nh
Z2VQb3J0Ojpjb250ZXh0RGVzdHJveWVkKCkgd2lsbCBjbG9zZSB0aGUgcG9ydCBiZWZvcmUgdGhl
IGNvbnRleHQgZ29lcyBhd2F5LCBhbmQgY2xvc2UoKSB3aWxsIGJsb2NrIGJlY2F1c2Ugd2UgYXJl
IGhvbGRpbmcgdGhlIG11dGV4LgotICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiByZW1v
dGVDb250ZXh0ID0gbV9yZW1vdGVQb3J0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
ICAgIGlmIChyZW1vdGVDb250ZXh0ID09IGNvbnRleHQgfHwgKHJlbW90ZUNvbnRleHQgJiYgcmVt
b3RlQ29udGV4dC0+aXNEb2N1bWVudCgpICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkpCi0gICAg
ICAgICAgICByZXR1cm4gbV9yZW1vdGVQb3J0OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCShyZXZpc2lvbiAxNDU5
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgLy8gVGhlIGdvYWwgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB0byBlbGltaW5h
dGUgY29udGVudGlvbiBleGNlcHQgd2hlbiBjbG9uaW5nIG9yIGNsb3NpbmcgdGhlIHBvcnQsIHNv
IGVhY2ggc2lkZSBvZiB0aGUgY2hhbm5lbCBoYXMgaXRzIG93biBzZXBhcmF0ZSBtdXRleC4KICAg
ICBjbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIHZvaWQgY3JlYXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUGFz
c1JlZlB0cjxNZXNzYWdlUG9ydD4pOwotCi0gICAgICAgIC8vIEFQSXMgZGVsZWdhdGVkIGZyb20g
TWVzc2FnZVBvcnRDaGFubmVsLmgKLSAgICAgICAgYm9vbCBlbnRhbmdsZUlmT3BlbihNZXNzYWdl
UG9ydCopOwotICAgICAgICB2b2lkIGRpc2VudGFuZ2xlKCk7Ci0gICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPik7
Ci0gICAgICAgIGJvb2wgdHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6RXZlbnREYXRhPiYpOwotICAgICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgICAgIGJv
b2wgaXNDb25uZWN0ZWRUbyhNZXNzYWdlUG9ydCopOwotICAgICAgICBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpOwotICAgICAgICBNZXNzYWdlUG9ydCogbG9jYWxseUVudGFuZ2xlZFBvcnQoY29u
c3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiAgICAgICAgIC8vIFdyYXBwZXIgZm9yIE1l
c3NhZ2VRdWV1ZSB0aGF0IGFsbG93cyB1cyB0byBkbyB0aHJlYWQgc2FmZSBzaGFyaW5nIGJ5IHR3
byBwcm94aWVzLgogICAgICAgICBjbGFzcyBNZXNzYWdlUG9ydFF1ZXVlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE1lc3NhZ2VQb3J0UXVldWU+IHsKICAgICAgICAgcHVibGljOgpAQCAt
ODYsMTUgKzc0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB+UGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwoKTsKIAotICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjcmVhdGUoUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydFF1ZXVlPiBpbmNvbWluZywgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBvdXRn
b2luZyk7CiAgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8TWVz
c2FnZVBvcnRRdWV1ZT4gaW5jb21pbmcsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnRRdWV1ZT4gb3V0
Z29pbmcpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IGVudGFuZ2xlZENoYW5uZWwoKTsKLSAgICAgICAgdm9pZCBzZXRFbnRhbmdsZWRDaGFubmVsKFBh
c3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+KTsKIAogICAgICAgICB2b2lkIHNl
dFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqKTsKLSAgICAgICAgTWVzc2FnZVBvcnQqIHJlbW90ZVBv
cnQoKTsKICAgICAgICAgdm9pZCBjbG9zZUludGVybmFsKCk7CiAKICAgICAgICAgLy8gTXV0ZXgg
dXNlZCB0byBlbnN1cmUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgb2JqZWN0IGludGVybmFscy4K
</data>
<flag name="commit-queue"
          id="214902"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193387</attachid>
            <date>2013-03-15 15:50:02 -0700</date>
            <delta_ts>2013-03-15 15:53:38 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>MoveCode.txt</filename>
            <type>text/plain</type>
            <size>14974</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTk0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAzLTE1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBhbW91bnQgb2Yg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZSBpbiBNZXNzYWdlUG9ydENoYW5uZWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hh
bm5lbC5oOiBJZmRlZmVkIG91dCBhbiB1bnVzZWQgY2hhbm5lbCgpIGZ1bmN0aW9uLCBleGNlcHQg
Zm9yCisgICAgICAgIENocm9taXVtLCB3aGVyZSBpdCBpcyB1c2VkLiBXZSBjZXJ0YWlubHkgZG9u
J3Qgd2FudCB0byBleHBvc2UgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBkZXRhaWwgYXMg
YSBwdWJsaWMgZnVuY3Rpb24uCisKKyAgICAgICAgKiBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oOiBSZW1vdmVkIGZ1bmN0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIKKyAg
ICAgICAgZGVsZWdhdGVkLiBNYWRlIGNsYXNzIGNvbnRlbnRzIGFsbCBwdWJsaWMsIGFzIGl0J3Mg
bm93IGJhc2ljYWxseSBhIGRhdGEgc3RvcmFnZQorICAgICAgICBmb3IgTWVzc2FnZVBvcnRDaGFu
bmVsLgorCisgICAgICAgICogZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGVDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6fk1lc3NhZ2VQb3J0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmVudGFuZ2xlSWZP
cGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVt
b3RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2Fn
ZUZyb21SZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpjbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmlzQ29ubmVjdGVkVG8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpoYXNQZW5kaW5nQWN0aXZp
dHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpsb2NhbGx5RW50YW5n
bGVkUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw6OmVudGFuZ2xlZENoYW5uZWwpOgorICAgICAgICBNb3ZlZCBjb2Rl
IGZyb20gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgdG8gTWVzc2FnZVBvcnRDaGFubmVsLiBB
ZGRlZCBzb21lCisgICAgICAgIEZJWE1Fcy4KKwogMjAxMy0wMy0xNSAgUm91c2xhbiBTb2xvbWFr
aGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCB1bmlm
aWVkIHRleHRjaGVja2VyIHZhcmlhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5oCShyZXZpc2lvbiAxNDU5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIH5NZXNzYWdlUG9ydENoYW5uZWwoKTsKIAorI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICAvLyBGSVhNRTogUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSBl
eHBvc2VkIHZpYSBhIHB1YmxpYyBmdW5jdGlvbi4KICAgICAgICAgUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwqIGNoYW5uZWwoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWwuZ2V0KCk7IH0KKyNl
bmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnRDaGFubmVs
KFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHAJKHJldmlzaW9uIDE0NTkxNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwxMCArMzcs
MjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBNZXNzYWdlUG9ydENoYW5uZWwgaW1w
bGVtZW50YXRpb25zIC0ganVzdCBkZWxlZ2F0ZSB0byB0aGUgUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuCiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbChQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0MSwgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydDIpCiB7Ci0g
ICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNoYW5uZWwocG9ydDEsIHBvcnQy
KTsKKyAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVl
dWU+IHF1ZXVlMSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9ydFF1ZXVl
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3Nh
Z2VQb3J0UXVldWU+IHF1ZXVlMiA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdl
UG9ydFF1ZXVlOjpjcmVhdGUoKTsKKworICAgIC8vIENyZWF0ZSBwcm94aWVzIGZvciBlYWNoIGVu
ZHBvaW50LgorICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbDEg
PSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMSwgcXVldWUyKTsKKyAg
ICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwyID0gUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShxdWV1ZTIsIHF1ZXVlMSk7CisKKyAgICAvLyBFbnRh
bmdsZSB0aGUgdHdvIGVuZHBvaW50cy4KKyAgICBjaGFubmVsMS0+bV9lbnRhbmdsZWRDaGFubmVs
ID0gY2hhbm5lbDI7CisgICAgY2hhbm5lbDItPm1fZW50YW5nbGVkQ2hhbm5lbCA9IGNoYW5uZWwx
OworCisgICAgLy8gTm93IGVudGFuZ2xlIHRoZSBwcm94aWVzIHdpdGggdGhlIGFwcHJvcHJpYXRl
IGxvY2FsIHBvcnRzLgorICAgIHBvcnQxLT5lbnRhbmdsZShNZXNzYWdlUG9ydENoYW5uZWw6OmNy
ZWF0ZShjaGFubmVsMikpOworICAgIHBvcnQyLT5lbnRhbmdsZShNZXNzYWdlUG9ydENoYW5uZWw6
OmNyZWF0ZShjaGFubmVsMSkpOwogfQogCiBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
TWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbD4gY2hhbm5lbCkKQEAgLTU1LDQ3ICs2OCw3OSBAQCBNZXNzYWdlUG9ydENoYW5uZWw6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbChQCiBNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNzYWdlUG9ydENo
YW5uZWwoKQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSBjbG9zZSBvdXIgcGxhdGZvcm0gY2hhbm5l
bCB3aGVuIHRoZSBiYXNlIGlzIGZyZWVkLCB0byBrZWVwIHRoZSBjaGFubmVsIG9iamVjdHMgZnJv
bSBsZWFraW5nLgotICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBjbG9zZSgpOwogfQogCiBi
b29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZW50YW5nbGVJZk9wZW4oTWVzc2FnZVBvcnQqIHBvcnQp
CiB7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+ZW50YW5nbGVJZk9wZW4ocG9ydCk7CisgICAgLy8g
V2UgY2FuJ3QgY2FsbCBtZW1iZXIgZnVuY3Rpb25zIG9uIG91ciByZW1vdGUgcGFpciB3aGlsZSBo
b2xkaW5nIG91ciBtdXRleCBvciB3ZSdsbCBkZWFkbG9jaywKKyAgICAvLyBidXQgd2UgbmVlZCB0
byBndWFyZCBhZ2FpbnN0IHRoZSByZW1vdGUgcG9ydCBnZXR0aW5nIGNsb3NlZC9mcmVlZCwgc28g
Y3JlYXRlIGEgc3RhbmRhbG9uZSByZWZlcmVuY2UuCisgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsPiByZW1vdGUgPSBtX2NoYW5uZWwtPmVudGFuZ2xlZENoYW5uZWwoKTsKKyAg
ICBpZiAoIXJlbW90ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlbW90ZS0+c2V0UmVt
b3RlUG9ydChwb3J0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydENo
YW5uZWw6OmRpc2VudGFuZ2xlKCkKIHsKLSAgICBtX2NoYW5uZWwtPmRpc2VudGFuZ2xlKCk7Cisg
ICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiByZW1vdGUgPSBtX2NoYW5uZWwt
PmVudGFuZ2xlZENoYW5uZWwoKTsKKyAgICBpZiAocmVtb3RlKQorICAgICAgICByZW1vdGUtPnNl
dFJlbW90ZVBvcnQoMCk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2Fn
ZVRvUmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+IG1lc3Nh
Z2UpCiB7Ci0gICAgbV9jaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKG1lc3NhZ2UpOworICAg
IE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBpZiAoIW1fY2hhbm5l
bC0+bV9vdXRnb2luZ1F1ZXVlKQorICAgICAgICByZXR1cm47CisgICAgYm9vbCB3YXNFbXB0eSA9
IG1fY2hhbm5lbC0+bV9vdXRnb2luZ1F1ZXVlLT5hcHBlbmRBbmRDaGVja0VtcHR5KG1lc3NhZ2Up
OworICAgIGlmICh3YXNFbXB0eSAmJiBtX2NoYW5uZWwtPm1fcmVtb3RlUG9ydCkKKyAgICAgICAg
bV9jaGFubmVsLT5tX3JlbW90ZVBvcnQtPm1lc3NhZ2VBdmFpbGFibGUoKTsKIH0KIAogYm9vbCBN
ZXNzYWdlUG9ydENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKE93blB0cjxNZXNzYWdl
UG9ydENoYW5uZWw6OkV2ZW50RGF0YT4mIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gbV9jaGFubmVs
LT50cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShyZXN1bHQpOworICAgIE11dGV4TG9ja2VyIGxvY2so
bV9jaGFubmVsLT5tX211dGV4KTsKKyAgICByZXN1bHQgPSBtX2NoYW5uZWwtPm1faW5jb21pbmdR
dWV1ZS0+dHJ5R2V0TWVzc2FnZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsOjpjbG9zZSgpCiB7Ci0gICAgbV9jaGFubmVsLT5jbG9zZSgpOworICAg
IFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlID0gbV9jaGFubmVsLT5l
bnRhbmdsZWRDaGFubmVsKCk7CisgICAgaWYgKCFyZW1vdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NoYW5uZWwtPmNsb3NlSW50ZXJuYWwoKTsKKyAgICByZW1vdGUtPmNsb3NlSW50ZXJuYWwo
KTsKIH0KIAogYm9vbCBNZXNzYWdlUG9ydENoYW5uZWw6OmlzQ29ubmVjdGVkVG8oTWVzc2FnZVBv
cnQqIHBvcnQpCiB7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+aXNDb25uZWN0ZWRUbyhwb3J0KTsK
KyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlc3VsdCByZW1haW5zIHRo
ZSBzYW1lIGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxvY2s/CisgICAgTXV0ZXhMb2NrZXIgbG9jayht
X2NoYW5uZWwtPm1fbXV0ZXgpOworICAgIHJldHVybiBtX2NoYW5uZWwtPm1fcmVtb3RlUG9ydCA9
PSBwb3J0OwogfQogCiBib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkKIHsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICAv
LyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlc3VsdCByZW1haW5zIHRoZSBzYW1l
IGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxvY2s/CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5u
ZWwtPm1fbXV0ZXgpOworICAgIHJldHVybiAhbV9jaGFubmVsLT5tX2luY29taW5nUXVldWUtPmlz
RW1wdHkoKTsKIH0KIAogTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6bG9jYWxseUVu
dGFuZ2xlZFBvcnQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAg
ICByZXR1cm4gbV9jaGFubmVsLT5sb2NhbGx5RW50YW5nbGVkUG9ydChjb250ZXh0KTsKKyAgICBN
dXRleExvY2tlciBsb2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CisgICAgLy8gU2VlIGlmIGJvdGgg
Y29udGV4dHMgYXJlIHJ1biBieSB0aGUgc2FtZSB0aHJlYWQgKGFyZSB0aGUgc2FtZSBjb250ZXh0
LCBvciBhcmUgYm90aCBkb2N1bWVudHMpLgorICAgIGlmIChtX2NoYW5uZWwtPm1fcmVtb3RlUG9y
dCkgeworICAgICAgICAvLyBUaGUgcmVtb3RlIHBvcnQncyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGlzIGd1YXJhbnRlZWQgbm90IHRvIGNoYW5nZSBoZXJlIC0gTWVzc2FnZVBvcnQ6OmNvbnRleHRE
ZXN0cm95ZWQoKQorICAgICAgICAvLyB3aWxsIGNsb3NlIHRoZSBwb3J0IGJlZm9yZSB0aGUgY29u
dGV4dCBnb2VzIGF3YXksIGFuZCBjbG9zZSgpIHdpbGwgYmxvY2sgYmVjYXVzZSB3ZSBhcmUgaG9s
ZGluZyB0aGUgbXV0ZXguCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHJlbW90ZUNv
bnRleHQgPSBtX2NoYW5uZWwtPm1fcmVtb3RlUG9ydC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgICAgICBpZiAocmVtb3RlQ29udGV4dCA9PSBjb250ZXh0IHx8IChyZW1vdGVDb250ZXh0
ICYmIHJlbW90ZUNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkp
KQorICAgICAgICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+bV9yZW1vdGVQb3J0OworICAgIH0KKyAg
ICByZXR1cm4gMDsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4g
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0
UXVldWU+IGluY29taW5nLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IG91dGdvaW5nKQpA
QCAtMTA0LDggKzE0OSw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IFAKIH0KIAogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnRRdWV1ZT4gaW5jb21pbmcsIFBhc3NSZWZQdHI8
TWVzc2FnZVBvcnRRdWV1ZT4gb3V0Z29pbmcpCi0gICAgOiBtX2VudGFuZ2xlZENoYW5uZWwoMCkK
LSAgICAsIG1faW5jb21pbmdRdWV1ZShpbmNvbWluZykKKyAgICA6IG1faW5jb21pbmdRdWV1ZShp
bmNvbWluZykKICAgICAsIG1fb3V0Z29pbmdRdWV1ZShvdXRnb2luZykKICAgICAsIG1fcmVtb3Rl
UG9ydCgwKQogewpAQCAtMTE1LDQyICsxNTksNiBAQCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bDo6flBsYXRmb3JtTWVzCiB7CiB9CiAKLXZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
OmNyZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydDEsIFBhc3NSZWZQdHI8
TWVzc2FnZVBvcnQ+IHBvcnQyKQotewotICAgIC8vIENyZWF0ZSBpbmNvbWluZy9vdXRnb2luZyBx
dWV1ZXMuCi0gICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9y
dFF1ZXVlPiBxdWV1ZTEgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRR
dWV1ZTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpN
ZXNzYWdlUG9ydFF1ZXVlPiBxdWV1ZTIgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVz
c2FnZVBvcnRRdWV1ZTo6Y3JlYXRlKCk7Ci0KLSAgICAvLyBDcmVhdGUgcHJveGllcyBmb3IgZWFj
aCBlbmRwb2ludC4KLSAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5u
ZWwxID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShxdWV1ZTEsIHF1ZXVlMik7
Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsMiA9IFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocXVldWUyLCBxdWV1ZTEpOwotCi0gICAgLy8g
RW50YW5nbGUgdGhlIHR3byBlbmRwb2ludHMuCi0gICAgY2hhbm5lbDEtPnNldEVudGFuZ2xlZENo
YW5uZWwoY2hhbm5lbDIpOwotICAgIGNoYW5uZWwyLT5zZXRFbnRhbmdsZWRDaGFubmVsKGNoYW5u
ZWwxKTsKLQotICAgIC8vIE5vdyBlbnRhbmdsZSB0aGUgcHJveGllcyB3aXRoIHRoZSBhcHByb3By
aWF0ZSBsb2NhbCBwb3J0cy4KLSAgICBwb3J0MS0+ZW50YW5nbGUoTWVzc2FnZVBvcnRDaGFubmVs
OjpjcmVhdGUoY2hhbm5lbDIpKTsKLSAgICBwb3J0Mi0+ZW50YW5nbGUoTWVzc2FnZVBvcnRDaGFu
bmVsOjpjcmVhdGUoY2hhbm5lbDEpKTsKLX0KLQotYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbDo6ZW50YW5nbGVJZk9wZW4oTWVzc2FnZVBvcnQqIHBvcnQpCi17Ci0gICAgLy8gV2UgY2Fu
J3QgY2FsbCBtZW1iZXIgZnVuY3Rpb25zIG9uIG91ciByZW1vdGUgcGFpciB3aGlsZSBob2xkaW5n
IG91ciBtdXRleCBvciB3ZSdsbCBkZWFkbG9jaywgYnV0IHdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5z
dCB0aGUgcmVtb3RlIHBvcnQgZ2V0dGluZyBjbG9zZWQvZnJlZWQsIHNvIGNyZWF0ZSBhIHN0YW5k
YWxvbmUgcmVmZXJlbmNlLgotICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4g
cmVtb3RlID0gZW50YW5nbGVkQ2hhbm5lbCgpOwotICAgIGlmICghcmVtb3RlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmVtb3RlLT5zZXRSZW1vdGVQb3J0KHBvcnQpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpkaXNlbnRhbmds
ZSgpCi17Ci0gICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiByZW1vdGUgPSBl
bnRhbmdsZWRDaGFubmVsKCk7Ci0gICAgaWYgKHJlbW90ZSkKLSAgICAgICAgcmVtb3RlLT5zZXRS
ZW1vdGVQb3J0KDApOwotfQotCiB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpzZXRS
ZW1vdGVQb3J0KE1lc3NhZ2VQb3J0KiBwb3J0KQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CkBAIC0xNTksNjAgKzE2NywxNSBAQCB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpzZXRSZW1vCiAgICAgbV9yZW1vdGVQb3J0ID0gcG9ydDsKIH0KIAotTWVzc2FnZVBvcnQq
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpyZW1vdGVQb3J0KCkKLXsKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIHJldHVybiBtX3JlbW90ZVBvcnQ7Ci19Ci0KIFBhc3NS
ZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjplbnRhbmdsZWRDaGFubmVsKCkKIHsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVz
IHRoYXQgdGhlIHJlc3VsdCByZW1haW5zIHRoZSBzYW1lIGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxv
Y2s/CisgICAgLy8gVGhpcyBsb2NrIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXR1cm5lZCBw
b2ludGVyIHdpbGwgbm90IGJlIHBvaW50aW5nIHRvIHJlbGVhc2VkIG1lbW9yeSwKKyAgICAvLyBi
dXQgbm90IHRoYXQgaXQgd2lsbCBzdGlsbCBiZSBwb2ludGluZyB0byB0aGlzIG9iamVjdCdzIGVu
dGFuZ2xlZCBwb3J0IGNoYW5uZWwuCiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAg
ICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsOwogfQogCi12b2lkIFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsOjpzZXRFbnRhbmdsZWRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw+IHJlbW90ZSkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwot
ICAgIC8vIFNob3VsZCBvbmx5IGJlIHNldCBhcyBwYXJ0IG9mIGluaXRpYWwgY3JlYXRpb24vZW50
YW5nbGVtZW50LgotICAgIGlmIChyZW1vdGUpCi0gICAgICAgIEFTU0VSVCghbV9lbnRhbmdsZWRD
aGFubmVsLmdldCgpKTsKLSAgICBtX2VudGFuZ2xlZENoYW5uZWwgPSByZW1vdGU7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gbWVzc2FnZSkKLXsKLSAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIGlmICghbV9vdXRnb2luZ1F1ZXVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgYm9vbCB3YXNFbXB0eSA9IG1fb3V0Z29pbmdRdWV1ZS0+YXBwZW5kQW5k
Q2hlY2tFbXB0eShtZXNzYWdlKTsKLSAgICBpZiAod2FzRW1wdHkgJiYgbV9yZW1vdGVQb3J0KQot
ICAgICAgICBtX3JlbW90ZVBvcnQtPm1lc3NhZ2VBdmFpbGFibGUoKTsKLX0KLQotYm9vbCBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiYgcmVzdWx0KQotewotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7Ci0gICAgcmVzdWx0ID0gbV9pbmNvbWluZ1F1ZXVlLT50cnlHZXRNZXNz
YWdlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbDo6aXNDb25uZWN0ZWRUbyhNZXNzYWdlUG9ydCogcG9ydCkKLXsKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIHJldHVybiBtX3JlbW90ZVBvcnQgPT0gcG9ydDsKLX0K
LQotLy8gQ2xvc2VzIHRoZSBwb3J0IHNvIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQg
ZnJvbSBlaXRoZXIgZW5kLgotdm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2Uo
KQotewotICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlID0gZW50
YW5nbGVkQ2hhbm5lbCgpOwotICAgIGlmICghcmVtb3RlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2xvc2VJbnRlcm5hbCgpOwotICAgIHJlbW90ZS0+Y2xvc2VJbnRlcm5hbCgpOwotfQotCiB2b2lk
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZUludGVybmFsKCkKIHsKICAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOwpAQCAtMjIyLDIzICsxODUsNCBAQCB2b2lkIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZUluCiAgICAgbV9vdXRnb2luZ1F1ZXVlID0gMDsKIH0K
IAotYm9vbCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkK
LXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIHJldHVybiAhbV9pbmNvbWlu
Z1F1ZXVlLT5pc0VtcHR5KCk7Ci19Ci0KLU1lc3NhZ2VQb3J0KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbDo6bG9jYWxseUVudGFuZ2xlZFBvcnQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIC8vIFNl
ZSBpZiBib3RoIGNvbnRleHRzIGFyZSBydW4gYnkgdGhlIHNhbWUgdGhyZWFkIChhcmUgdGhlIHNh
bWUgY29udGV4dCwgb3IgYXJlIGJvdGggZG9jdW1lbnRzKS4KLSAgICBpZiAobV9yZW1vdGVQb3J0
KSB7Ci0gICAgICAgIC8vIFRoZSByZW1vdGUgcG9ydCdzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
aXMgZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIGhlcmUgLSBNZXNzYWdlUG9ydDo6Y29udGV4dERl
c3Ryb3llZCgpIHdpbGwgY2xvc2UgdGhlIHBvcnQgYmVmb3JlIHRoZSBjb250ZXh0IGdvZXMgYXdh
eSwgYW5kIGNsb3NlKCkgd2lsbCBibG9jayBiZWNhdXNlIHdlIGFyZSBob2xkaW5nIHRoZSBtdXRl
eC4KLSAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogcmVtb3RlQ29udGV4dCA9IG1fcmVt
b3RlUG9ydC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICBpZiAocmVtb3RlQ29u
dGV4dCA9PSBjb250ZXh0IHx8IChyZW1vdGVDb250ZXh0ICYmIHJlbW90ZUNvbnRleHQtPmlzRG9j
dW1lbnQoKSAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpKQotICAgICAgICAgICAgcmV0dXJuIG1f
cmVtb3RlUG9ydDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAkocmV2aXNpb24gMTQ1OTE3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMTggKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoZSBn
b2FsIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgdG8gZWxpbWluYXRlIGNvbnRlbnRpb24gZXhj
ZXB0IHdoZW4gY2xvbmluZyBvciBjbG9zaW5nIHRoZSBwb3J0LCBzbyBlYWNoIHNpZGUgb2YgdGhl
IGNoYW5uZWwgaGFzIGl0cyBvd24gc2VwYXJhdGUgbXV0ZXguCiAgICAgY2xhc3MgUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4sIFBhc3NSZWZQdHI8TWVzc2FnZVBv
cnQ+KTsKLQotICAgICAgICAvLyBBUElzIGRlbGVnYXRlZCBmcm9tIE1lc3NhZ2VQb3J0Q2hhbm5l
bC5oCi0gICAgICAgIGJvb2wgZW50YW5nbGVJZk9wZW4oTWVzc2FnZVBvcnQqKTsKLSAgICAgICAg
dm9pZCBkaXNlbnRhbmdsZSgpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4pOwotICAgICAgICBib29sIHRy
eUdldE1lc3NhZ2VGcm9tUmVtb3RlKE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0
YT4mKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOwotICAgICAgICBib29sIGlzQ29ubmVjdGVkVG8o
TWVzc2FnZVBvcnQqKTsKLSAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKTsKLSAgICAg
ICAgTWVzc2FnZVBvcnQqIGxvY2FsbHlFbnRhbmdsZWRQb3J0KGNvbnN0IFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKLQogICAgICAgICAvLyBXcmFwcGVyIGZvciBNZXNzYWdlUXVldWUgdGhhdCBh
bGxvd3MgdXMgdG8gZG8gdGhyZWFkIHNhZmUgc2hhcmluZyBieSB0d28gcHJveGllcy4KICAgICAg
ICAgY2xhc3MgTWVzc2FnZVBvcnRRdWV1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxN
ZXNzYWdlUG9ydFF1ZXVlPiB7CiAgICAgICAgIHB1YmxpYzoKQEAgLTg2LDE1ICs3NCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgflBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
KCk7CiAKLSAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbD4gY3JlYXRlKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnRRdWV1ZT4gaW5j
b21pbmcsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnRRdWV1ZT4gb3V0Z29pbmcpOwogICAgICAgICBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IGlu
Y29taW5nLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IG91dGdvaW5nKTsKIAogICAgICAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBlbnRhbmdsZWRDaGFubmVs
KCk7Ci0gICAgICAgIHZvaWQgc2V0RW50YW5nbGVkQ2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsPik7CiAKICAgICAgICAgdm9pZCBzZXRSZW1vdGVQb3J0KE1lc3Nh
Z2VQb3J0Kik7Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiByZW1vdGVQb3J0KCk7CiAgICAgICAgIHZv
aWQgY2xvc2VJbnRlcm5hbCgpOwogCiAgICAgICAgIC8vIE11dGV4IHVzZWQgdG8gZW5zdXJlIGV4
Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIG9iamVjdCBpbnRlcm5hbHMuCg==
</data>
<flag name="review"
          id="214908"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>