<?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>83269</bug_id>
          
          <creation_ts>2012-04-05 05:03:00 -0700</creation_ts>
          <short_desc>Devirtualize Node::insertedInto() and Node::removeFrom()</short_desc>
          <delta_ts>2012-05-22 23:15:49 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>82701</dependson>
    
    <dependson>86175</dependson>
          <blocked>83268</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596491</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-04-05 05:03:00 -0700</bug_when>
    <thetext>This is the first step of out-of-node traversal + de-virtualize series.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630191</commentid>
    <comment_count>1</comment_count>
      <attachid>143258</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 03:52:12 -0700</bug_when>
    <thetext>Created attachment 143258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630193</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 03:52:52 -0700</bug_when>
    <thetext>Not benchmarked yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631253</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 23:06:58 -0700</bug_when>
    <thetext>The benchmark showed under 1% improvement even on dom-attr.html
This doesn&apos;t look worth pursing. Closing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631261</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-22 23:15:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; The benchmark showed under 1% improvement even on dom-attr.html
&gt; This doesn&apos;t look worth pursing. Closing...

Okay.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143258</attachid>
            <date>2012-05-22 03:52:12 -0700</date>
            <delta_ts>2012-05-22 03:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83269-20120522195211.patch</filename>
            <type>text/plain</type>
            <size>28411</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDQyM2MwYzhlZjM5NDI2YzlmMDZkYjg1YjMxMDcwMDNj
N2JiOWVlYjIuLmJjZDI0OTQwYTZiMDEzNDk4Yzc1M2ZmMDBlMTVkOTY3NzY5MmViZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0xOTAsMTEg
KzE5MCwyMCBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZGUp
CiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgTm9k
ZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCByZXF1ZXN0ID0gTm9kZTo6SW5zZXJ0aW9u
RG9uZTsKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdChub2RlKTsKLSAgICBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IHJlcXVlc3QgPSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNl
cnRpb25Qb2ludCk7CisgICAgbm9kZS0+c2V0SW5Eb2N1bWVudCgpOwogCi0gICAgaWYgKG5vZGUt
PmlzQ29udGFpbmVyTm9kZSgpKQorICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgewor
ICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgdG9FbGVtZW50
KG5vZGUpLT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgICAgICBpZiAobm9kZS0+aGFzQ3Vz
dG9tQ2FsbGJhY2tzKCkpCisgICAgICAgICAgICByZXF1ZXN0ID0gbm9kZS0+aW5zZXJ0ZWRJbnRv
KG1faW5zZXJ0aW9uUG9pbnQpOwogICAgICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRv
RG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobm9kZS0+aGFzQ3VzdG9tQ2FsbGJhY2tzKCkpCisgICAgICAgICAgICByZXF1ZXN0ID0gbm9k
ZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpOworICAgIH0KIAogICAgIGlmIChyZXF1
ZXN0ID09IE5vZGU6Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNjZW5kYW50SW5zZXJl
dGlvbnMpCiAgICAgICAgIG5vZGUtPmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucyhtX2lu
c2VydGlvblBvaW50KTsKQEAgLTIwNCwxMCArMjEzLDE1IEBAIGlubGluZSB2b2lkIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJO
b2RlCiB7CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogICAg
IGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKKyAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IHJlcXVlc3QgPSBOb2RlOjpJbnNlcnRpb25Eb25lOwogCi0gICAgTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCByZXF1ZXN0ID0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5z
ZXJ0aW9uUG9pbnQpOwotCisgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
dG9FbGVtZW50KG5vZGUpLT5pbnNlcnRlZEludG9UcmVlKCk7CisgICAgaWYgKG5vZGUtPmhhc0N1
c3RvbUNhbGxiYWNrcygpKQorICAgICAgICByZXF1ZXN0ID0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1f
aW5zZXJ0aW9uUG9pbnQpOworICAgIAogICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKG5vZGUpOworCiAgICAgaWYgKHJlcXVlc3QgPT0gTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2Fs
bERpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucykKICAgICAgICAgbm9kZS0+ZGlkTm90aWZ5
RGVzY2VuZGFudEluc2VyZXRpb25zKG1faW5zZXJ0aW9uUG9pbnQpOwogCkBAIC0yNDAsMTAgKzI1
NCwyMSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5v
ZGUqIG5vZGUpCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5v
ZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRp
b25Qb2ludCk7Ci0KLSAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCisgICAgaWYgKG5v
ZGUtPmlzQ29udGFpbmVyTm9kZSgpKSB7CisgICAgICAgIGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tz
ID0gbm9kZS0+aGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CisgICAgICAgIGlmIChoYXNDdXN0b21DYWxs
YmFja3MpCisgICAgICAgICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50KTsK
KyAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHRvRWxlbWVu
dChub2RlKS0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworICAgICAgICBub2RlLT5jbGVhckluRG9j
dW1lbnQoKTsKKyAgICAgICAgaWYgKGhhc0N1c3RvbUNhbGxiYWNrcyAmJiBub2RlLT5oYXNJRCgp
ICYmIG5vZGUtPmlzRm9ybUVsZW1lbnQoKSkKKyAgICAgICAgICAgIG5vZGUtPmRvY3VtZW50KCkt
PnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsKICAgICAgICAgbm90aWZ5RGVzY2VuZGFudFJlbW92
ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAobm9kZS0+aGFzQ3VzdG9tQ2FsbGJhY2tzKCkpCisgICAgICAgICAgICBub2RlLT5y
ZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50KTsKKyAgICAgICAgbm9kZS0+Y2xlYXJJbkRvY3Vt
ZW50KCk7CisgICAgfQogfQogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6
Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSogbm9kZSkKQEAgLTI1MSw3
ICsyNzYsMTAgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlO
b2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG4KICAgICBBU1NFUlQoIW1faW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogCi0g
ICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CisgICAgaWYgKG5vZGUtPmhh
c0N1c3RvbUNhbGxiYWNrcygpKQorICAgICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlv
blBvaW50KTsKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICB0b0VsZW1l
bnQobm9kZSktPnJlbW92ZWRGcm9tVHJlZSgpOwogICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVk
RnJvbVRyZWUobm9kZSk7CiAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5jcHAKaW5kZXggYTY3YTZiNWQ1MGZmYjllMTFhY2NmNmZmMDVmZGMwM2Nl
NDkwNTZhMC4uOTBlYzgzOGE4ZjZjYTg3NDhmNTRkMTRhMzI0OGViZmEzYTc1OGJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRG9jdW1lbnRUeXBlOjpEb2N1bWVudFR5cGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQpCi0gICAgOiBOb2RlKGRvY3VtZW50LCBDcmVhdGVPdGhlcikKKyAgICA6IE5v
ZGUoZG9jdW1lbnQsIENyZWF0ZU90aGVyV2l0aEN1c3RvbUNhbGxiYWNrcykKICAgICAsIG1fbmFt
ZShuYW1lKQogICAgICwgbV9wdWJsaWNJZChwdWJsaWNJZCkKICAgICAsIG1fc3lzdGVtSWQoc3lz
dGVtSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMjM5MGM3YzBjNzE2MTkwMjBjNWJjMzk2
M2I5NThmNTVlMjdmNmZmOS4uOWQzYWUyMTZiNjM1MzFlZjY3YTdhODJkNGYzMGVhNzYwMGRiODIz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODg1LDYxICs4ODUsMzcgQEAgdm9pZCBFbGVt
ZW50OjpzZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChib29sKQogewog
fQogCi1Ob2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVk
SW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkKK3ZvaWQgRWxlbWVudDo6c2V0SWRGcm9tQXR0cmli
dXRlKCkKIHsKLSAgICAvLyBuZWVkIHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2luZyBmaXJzdCBz
byBpbkRvY3VtZW50KCkgaXMgdHJ1ZQotICAgIC8vIGJ5IHRoZSB0aW1lIHdlIHJlYWNoIHVwZGF0
ZUlkCi0gICAgQ29udGFpbmVyTm9kZTo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKKyAg
ICBBU1NFUlQoaGFzSUQoKSk7CisgICAgQXR0cmlidXRlKiBpZEl0ZW0gPSBnZXRBdHRyaWJ1dGVJ
dGVtKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKKyAgICBpZiAoaWRJdGVtICYmICFp
ZEl0ZW0tPmlzTnVsbCgpKQorICAgICAgICB1cGRhdGVJZChudWxsQXRvbSwgaWRJdGVtLT52YWx1
ZSgpKTsKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpICYmIHBhcmVudEVsZW1lbnQoKSAmJiAhcGFyZW50RWxlbWVudCgpLT5j
b250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkpCi0gICAgICAgIHNldENvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKHRydWUpOwotI2VuZGlm
Ci0KLSAgICBpZiAoIWluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVy
biBJbnNlcnRpb25Eb25lOwotCi0gICAgaWYgKG1fYXR0cmlidXRlRGF0YSkgewotICAgICAgICBp
ZiAoaGFzSUQoKSkgewotICAgICAgICAgICAgQXR0cmlidXRlKiBpZEl0ZW0gPSBnZXRBdHRyaWJ1
dGVJdGVtKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChp
ZEl0ZW0gJiYgIWlkSXRlbS0+aXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgdXBkYXRlSWQobnVs
bEF0b20sIGlkSXRlbS0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGhhc05hbWUo
KSkgewotICAgICAgICAgICAgQXR0cmlidXRlKiBuYW1lSXRlbSA9IGdldEF0dHJpYnV0ZUl0ZW0o
SFRNTE5hbWVzOjpuYW1lQXR0cik7Ci0gICAgICAgICAgICBpZiAobmFtZUl0ZW0gJiYgIW5hbWVJ
dGVtLT5pc051bGwoKSkKLSAgICAgICAgICAgICAgICB1cGRhdGVOYW1lKG51bGxBdG9tLCBuYW1l
SXRlbS0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSW5zZXJ0aW9u
RG9uZTsKIH0KLQotdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKK3ZvaWQgRWxlbWVudDo6c2V0TmFtZUZyb21BdHRyaWJ1dGUoKQogewotI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQotICAg
ICAgICBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1l
Qm91bmRhcmllcyhmYWxzZSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQoaGFzTmFtZSgpKTsKKyAgICBB
dHRyaWJ1dGUqIG5hbWVJdGVtID0gZ2V0QXR0cmlidXRlSXRlbShIVE1MTmFtZXM6Om5hbWVBdHRy
KTsKKyAgICBpZiAobmFtZUl0ZW0gJiYgIW5hbWVJdGVtLT5pc051bGwoKSkKKyAgICAgICAgdXBk
YXRlTmFtZShudWxsQXRvbSwgbmFtZUl0ZW0tPnZhbHVlKCkpOworfQogCi0gICAgc2V0U2F2ZWRM
YXllclNjcm9sbE9mZnNldChJbnRTaXplKCkpOwogCi0gICAgaWYgKGluc2VydGlvblBvaW50LT5p
bkRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKG1fYXR0cmlidXRlRGF0YSkgewotICAgICAgICAg
ICAgaWYgKGhhc0lEKCkpIHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGlkSXRlbSA9IGdl
dEF0dHJpYnV0ZUl0ZW0oZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1lKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChpZEl0ZW0gJiYgIWlkSXRlbS0+aXNOdWxsKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHVwZGF0ZUlkKGlkSXRlbS0+dmFsdWUoKSwgbnVsbEF0b20pOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGhhc05hbWUoKSkgewotICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSog
bmFtZUl0ZW0gPSBnZXRBdHRyaWJ1dGVJdGVtKEhUTUxOYW1lczo6bmFtZUF0dHIpOwotICAgICAg
ICAgICAgICAgIGlmIChuYW1lSXRlbSAmJiAhbmFtZUl0ZW0tPmlzTnVsbCgpKQotICAgICAgICAg
ICAgICAgICAgICB1cGRhdGVOYW1lKG5hbWVJdGVtLT52YWx1ZSgpLCBudWxsQXRvbSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Cit2b2lkIEVsZW1lbnQ6OmNsZWFySWRGcm9tQXR0
cmlidXRlKCkKK3sKKyAgICBBU1NFUlQoaGFzSUQoKSk7CisgICAgQXR0cmlidXRlKiBpZEl0ZW0g
PSBnZXRBdHRyaWJ1dGVJdGVtKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKKyAgICBp
ZiAoaWRJdGVtICYmICFpZEl0ZW0tPmlzTnVsbCgpKQorICAgICAgICB1cGRhdGVJZChpZEl0ZW0t
PnZhbHVlKCksIG51bGxBdG9tKTsKK30KIAotICAgIENvbnRhaW5lck5vZGU6OnJlbW92ZWRGcm9t
KGluc2VydGlvblBvaW50KTsKK3ZvaWQgRWxlbWVudDo6Y2xlYXJOYW1lRnJvbUF0dHJpYnV0ZSgp
Cit7CisgICAgQVNTRVJUKGhhc05hbWUoKSk7CisgICAgQXR0cmlidXRlKiBuYW1lSXRlbSA9IGdl
dEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7CisgICAgaWYgKG5hbWVJdGVtICYm
ICFuYW1lSXRlbS0+aXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZU5hbWUobmFtZUl0ZW0tPnZhbHVl
KCksIG51bGxBdG9tKTsKIH0KIAogdm9pZCBFbGVtZW50OjphdHRhY2goKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKaW5kZXggZTQzNmYzNDgxNDU5ZWQ4ODgwOWRhYTMzNzk3MjhjNThjNmVjMjM4Yy4uMDdlMjI3
OGE1MjJhY2JlNjdlMGRlNGU2ZmZmOTRkODMzZTc0NjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC00MTcsNiArNDE3LDExIEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxP
ZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3Qg
SW50U2l6ZSYpOwogCisgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCk7CisgICAgdm9pZCBpbnNl
cnRlZEludG9Eb2N1bWVudCgpOworICAgIHZvaWQgcmVtb3ZlZEZyb21UcmVlKCk7CisgICAgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCkBAIC00
MjQsOCArNDI5LDYgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKE5vZGUqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hh
bmdlKTsKQEAgLTQ4Niw2ICs0ODksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUV4dHJh
TmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdOYW1lKTsKIAogICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnROb2RlKCk7CisgICAgdm9pZCBjbGVhcklkRnJvbUF0dHJpYnV0ZSgpOworICAgIHZvaWQg
Y2xlYXJOYW1lRnJvbUF0dHJpYnV0ZSgpOworICAgIHZvaWQgc2V0SWRGcm9tQXR0cmlidXRlKCk7
CisgICAgdm9pZCBzZXROYW1lRnJvbUF0dHJpYnV0ZSgpOwogCiBwcml2YXRlOgogICAgIG11dGFi
bGUgT3duUHRyPEVsZW1lbnRBdHRyaWJ1dGVEYXRhPiBtX2F0dHJpYnV0ZURhdGE7CkBAIC03MDIs
NiArNzA5LDQ4IEBAIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0NsYXNzKCkgY29uc3QKICAgICBy
ZXR1cm4gYXR0cmlidXRlRGF0YSgpICYmIGF0dHJpYnV0ZURhdGEoKS0+aGFzQ2xhc3MoKTsKIH0K
IAoraW5saW5lIHZvaWQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSgpCit7CisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgJiYg
cGFyZW50RWxlbWVudCgpICYmICFwYXJlbnRFbGVtZW50KCktPmNvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnQoKSkKKyAgICAgICAgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3Jz
Q3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXModHJ1ZSk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQg
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQoreworICAgIGluc2VydGVkSW50b1RyZWUo
KTsKKworICAgIGlmIChtX2F0dHJpYnV0ZURhdGEpIHsKKyAgICAgICAgaWYgKGhhc0lEKCkpCisg
ICAgICAgICAgICBzZXRJZEZyb21BdHRyaWJ1dGUoKTsKKyAgICAgICAgaWYgKGhhc05hbWUoKSkK
KyAgICAgICAgICAgIHNldE5hbWVGcm9tQXR0cmlidXRlKCk7CisgICAgfQorfQorCitpbmxpbmUg
dm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUoKQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICBpZiAoY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICBzZXRD
b250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmll
cyhmYWxzZSk7CisjZW5kaWYKKworICAgIHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoSW50U2l6
ZSgpKTsKK30KKworaW5saW5lIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCit7
CisgICAgcmVtb3ZlZEZyb21UcmVlKCk7CisKKyAgICBpZiAobV9hdHRyaWJ1dGVEYXRhKSB7Cisg
ICAgICAgIGlmIChoYXNJRCgpKQorICAgICAgICAgICAgY2xlYXJJZEZyb21BdHRyaWJ1dGUoKTsK
KyAgICAgICAgaWYgKGhhc05hbWUoKSkKKyAgICAgICAgICAgIGNsZWFyTmFtZUZyb21BdHRyaWJ1
dGUoKTsKKyAgICB9Cit9CisKIC8vIFB1dCBoZXJlIHRvIG1ha2UgdGhlbSBpbmxpbmUuCiBpbmxp
bmUgYm9vbCBOb2RlOjpoYXNJRCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOTEwOGYz
NjMyMzUyZjZiZTQ1OThkM2U3YmFlNzEzMzFkZmFkZDc0YS4uZGQwNzUyNTk5ZTljMzAzZGY2ODVh
Mzk0YWQwMmViNWE2MjIzZmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjQ0OSwyMSArMjQ0OSw2
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpOwogfQogCi1Ob2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IE5vZGU6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkK
LXsKLSAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5l
ck5vZGUoKSk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAg
IHNldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwotICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwotfQot
Ci12b2lkIE5vZGU6OnJlbW92ZWRGcm9tKE5vZGUqIGluc2VydGlvblBvaW50KQotewotICAgIEFT
U0VSVChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsK
LSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgY2xlYXJGbGFn
KEluRG9jdW1lbnRGbGFnKTsKLX0KLQogdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgVHJlZVNjb3BlQWRvcHRlcjo6ZW5zdXJlRGlk
TW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQob2xkRG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
Njc0NmJjZGE5NWY1YzhmOTc3YjllNjUwOTY2ZTVkNTk4MTQ5Y2QyZS4uZGYxNTVhZjE0OWNmNjFj
MGI2ZWQyZDc5MmI0MjU4YjM0ZGZjMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yMTUsNiArMjE1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0F0dHJpYnV0ZU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NoYXJhY3RlckRhdGFOb2RlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRm9ybUVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJ
c1NoYWRvd1Jvb3RGbGFnKTsgfQogICAgIGJvb2wgaW5OYW1lZEZsb3coKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKEluTmFtZWRGbG93RmxhZyk7IH0KQEAgLTQyMiw2ICs0MjQsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9CiAKKyAgICB2
b2lkIHNldEluRG9jdW1lbnQoKSB7IHNldEZsYWcoSW5Eb2N1bWVudEZsYWcpOyB9CisgICAgdm9p
ZCBjbGVhckluRG9jdW1lbnQoKSB7IGNsZWFyRmxhZyhJbkRvY3VtZW50RmxhZyk7IH0KKwogICAg
IGJvb2wgaXNSZWFkT25seU5vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IEVOVElU
WV9SRUZFUkVOQ0VfTk9ERTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5v
ZGVUeXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNoaWxkTm9kZUNv
dW50KCkgY29uc3Q7CkBAIC01MzQsMTUgKzUzOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEluc2Vy
dGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNjZW5kYW50SW5zZXJldGlvbnMKICAgICB9OwogCi0g
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhOb2Rl
KiBpbnNlcnRpb25Qb2ludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE5vdGlmeURlc2NlbmRhbnRJ
bnNlcmV0aW9ucyhOb2RlKikgeyB9CisgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgeyBBU1NFUlQoaGFzQ3VzdG9tQ2FsbGJhY2tzKCkp
OyByZXR1cm4gSW5zZXJ0aW9uRG9uZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNj
ZW5kYW50SW5zZXJldGlvbnMoTm9kZSopIHsgQVNTRVJUKGhhc0N1c3RvbUNhbGxiYWNrcygpKTsg
fQogCiAgICAgLy8gTm90aWZpZXMgdGhlIG5vZGUgdGhhdCBpdCBpcyBubyBsb25nZXIgcGFydCBv
ZiB0aGUgdHJlZS4KICAgICAvLwogICAgIC8vIFRoaXMgaXMgYSBkdWFsIG9mIGluc2VydGVkSW50
bygpLCBhbmQgaXMgc2ltaWxhciB0byB0aGUgRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQgRE9N
IGV2ZW50LCBidXQgZG9lcyBub3QgcmVxdWlyZSB0aGUgb3ZlcmhlYWQgb2YgZXZlbnQKICAgICAv
LyBkaXNwYXRjaGluZywgYW5kIGlzIGNhbGxlZCBfYWZ0ZXJfIHRoZSBub2RlIGlzIHJlbW92ZWQg
ZnJvbSB0aGUgdHJlZS4KICAgICAvLwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShOb2Rl
KiBpbnNlcnRpb25Qb2ludCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKE5vZGUqKSB7
IEFTU0VSVChoYXNDdXN0b21DYWxsYmFja3MoKSk7IH0KIAogI2lmbmRlZiBOREVCVUcKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0OwpAQCAtNzExLDYgKzcxNiw3IEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBDb25zdHJ1Y3Rpb25UeXBlIHsgCiAgICAgICAgIENyZWF0ZU90aGVyID0gRGVmYXVsdE5v
ZGVGbGFncywKKyAgICAgICAgQ3JlYXRlT3RoZXJXaXRoQ3VzdG9tQ2FsbGJhY2tzID0gRGVmYXVs
dE5vZGVGbGFncyB8IEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZVRleHQg
PSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNUZXh0RmxhZywKICAgICAgICAgQ3JlYXRlQ29udGFpbmVy
ID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAgIENyZWF0ZUVs
ZW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggNDVmYWE0ZGU0NDhhMGY3MGQy
M2VhMzcxNDcyZGJkYmQ1ZDMyODFhOC4uNTI0YjI5MGNmYmE3M2ZkMGIxZTUxMjhjYWY2MTFkZDAz
NjAwZWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKLSAgICA6IE5vZGUo
ZG9jdW1lbnQsIENyZWF0ZU90aGVyKQorICAgIDogTm9kZShkb2N1bWVudCwgQ3JlYXRlT3RoZXJX
aXRoQ3VzdG9tQ2FsbGJhY2tzKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQogICAgICwgbV9kYXRh
KGRhdGEpCiAgICAgLCBtX2NhY2hlZFNoZWV0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNzZkZDBkMTU5ZjA3NWQ5ZGI2NmZkN2ExZmRl
YmUyZGE5NTk0OWFmNy4uZTIxZGE4NzIzODZkY2ZlYjI3ZDJkYzFkYzU2NGE0NGFiOGFjOTJhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
NjIsMTEgKzYyLDEyIEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjppbnNlcnRlZEludG8oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CisgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOworCiAgICAgcmVzZXRGb3JtT3duZXIo
KTsKICAgICBpZiAoIWluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAg
ICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCiAgICAgICAgIGVsZW1l
bnQtPmRvY3VtZW50KCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlz
KTsKIH0KQEAgLTc0LDEyICs3NSwxMyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKE5vZGUqIGluc2VydGlvblBvaW50KQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnJlbW92ZWRGcm9tKE5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKwogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQog
ICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9y
bUF0dHJpYnV0ZSh0aGlzKTsKICAgICAvLyBJZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90
aCBpbiB0aGUgc2FtZSB0cmVlLCBwcmVzZXJ2ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4K
ICAgICAvLyBPdGhlcndpc2UsIG51bGwgb3V0IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVz
IGZyb20gdGhlIGZvcm0ncyBsaXN0IG9mIGVsZW1lbnRzLgogICAgIGlmIChtX2Zvcm0gJiYgZWxl
bWVudC0+aGlnaGVzdEFuY2VzdG9yKCkgIT0gbV9mb3JtLT5oaWdoZXN0QW5jZXN0b3IoKSkKLSAg
ICAgICAgc2V0Rm9ybSgwKTsKKyAgICAgICAgc2V0Rm9ybSgwLCBmYWxzZSk7CiB9CiAKIEhUTUxG
b3JtRWxlbWVudCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0oY29u
c3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxGb3JtRWxlbWVudCogY3VycmVudEFzc29jaWF0
ZWRGb3JtKQpAQCAtMTEwLDE3ICsxMTIsMTkgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
OmZvcm1SZW1vdmVkRnJvbVRyZWUoY29uc3QgTm9kZSogZm9ybVJvb3QpCiAgICAgICAgIHNldEZv
cm0oMCk7CiB9CiAKLXZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRGb3JtKEhUTUxGb3Jt
RWxlbWVudCogbmV3Rm9ybSkKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRGb3JtKEhU
TUxGb3JtRWxlbWVudCogbmV3Rm9ybSwgYm9vbCBkb2VzTm90aWZ5KQogewogICAgIGlmIChtX2Zv
cm0gPT0gbmV3Rm9ybSkKICAgICAgICAgcmV0dXJuOwotICAgIHdpbGxDaGFuZ2VGb3JtKCk7Cisg
ICAgaWYgKGRvZXNOb3RpZnkpCisgICAgICAgIHdpbGxDaGFuZ2VGb3JtKCk7CiAgICAgaWYgKG1f
Zm9ybSkKICAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKICAgICBtX2Zv
cm0gPSBuZXdGb3JtOwogICAgIGlmIChtX2Zvcm0pCiAgICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJG
b3JtRWxlbWVudCh0aGlzKTsKLSAgICBkaWRDaGFuZ2VGb3JtKCk7CisgICAgaWYgKGRvZXNOb3Rp
ZnkpCisgICAgICAgIGRpZENoYW5nZUZvcm0oKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OndpbGxDaGFuZ2VGb3JtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oCmluZGV4IDkyZWI4ZDdlZmJlNzgyYTUxOTUwOGZjM2MzNTJjOTlkNjNiMzNh
ZGMuLjk1NWQ5MmUyMWZiNjBiN2M5ZGE5OGEzOWRlYzY0YTExOWYxNDZjYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtODMsNyArODMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVkRnJvbShOb2RlKik7CiAgICAgdm9pZCBkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpOwogCi0gICAgdm9pZCBzZXRGb3Jt
KEhUTUxGb3JtRWxlbWVudCopOworICAgIHZvaWQgc2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqLCBi
b29sIGRvZXNOb3RpZnkgPSB0cnVlKTsKICAgICB2b2lkIGZvcm1BdHRyaWJ1dGVDaGFuZ2VkKCk7
CiAKICAgICAvLyBJZiB5b3UgYWRkIGFuIG92ZXJyaWRlIG9mIHdpbGxDaGFuZ2VGb3JtKCkgb3Ig
ZGlkQ2hhbmdlRm9ybSgpIHRvIGEgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJhc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVt
ZW50LmNwcAppbmRleCBlOTcwZjQwNjkyMjUxYmM5ZTg4NzY3ZDRlNTU4ZTQ3OTE5ZmE1OWM5Li42
NGI5ODBmYTgzYTBlMDdjOTI1NzRkMmU3YjIyZmI2NDZjN2I4MGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBAIGlubGluZSBIVE1MQmFz
ZUVsZW1lbnQ6OkhUTUxCYXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCoKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGJhc2VUYWcpKTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA0NzJkODA0MzBiYzg2ZTcyNTc0
NWNmMmQ5NDgwNjBkYjJmMDkyYjRhLi5hMzlkYjAzODU5ZThjZTQyZjc2MTVjNzBhMTJiNDY1Yjgz
ZGEyZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03Nyw2
ICs3Nyw3IEBAIEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVuCiAgICAgLCBtX3dhc0RlbW90ZWQoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9ybVRhZykpOworICAgIHNldEhhc0N1c3Rv
bUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYxLDggKzE2Miw2IEBAIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbShOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytp
KQogICAgICAgICBhc3NvY2lhdGVkRWxlbWVudHNbaV0tPmZvcm1SZW1vdmVkRnJvbVRyZWUocm9v
dCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKLSAgICBp
ZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiBoYXNJRCgpKQotICAgICAgICBkb2N1
bWVudCgpLT5yZXNldEZvcm1FbGVtZW50c093bmVyKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaAppbmRleCBiN2JiMDU0NDg2NmY2ZTNkMzYxNWRhMTIyM2VhNjAyMzYxYTll
ZjNmLi5kMDU1YjZkNWY1NzQ5YTk3ZjkyYzIzZWQyMzg4M2RhNWI4ZTM3ZWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1FbGVtZW50KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcmV0aW9ucyhOb2RlKikgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNTEwYmI2Mjc2YzVlZDg4MmNi
NTliOGYzYjJiYjlhNjhkMTY5ODAxLi44YWI4YWMyZDNlYzQ0MjgwNWFkZTYyMjcwYWVhNDM5Mjll
Yjg2NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAgSFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAsIG1fY29tcG9zaXRlT3Bl
cmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbWdU
YWcpKTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKICAgICBpZiAoZm9ybSkKICAgICAg
ICAgZm9ybS0+cmVnaXN0ZXJJbWdFbGVtZW50KHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTMxZTk2NGIwOGUxYmQyZDRmNzg1M2M2NDAxZTUx
MTdhNWVmNmJlMS4uNGE3NzY2OTlmN2RkNWUyODY5YzAwM2JjZDdjZTQ4NzcyOWVmZWE5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05OSw2ICs5OSw3IEBA
IEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX2lucHV0VHlwZShJbnB1dFR5cGU6OmNy
ZWF0ZVRleHQodGhpcykpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8IGhh
c1RhZ05hbWUoaXNpbmRleFRhZykpOworICAgIEFTU0VSVChoYXNDdXN0b21DYWxsYmFja3MoKSk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEludGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW50ZW50RWxlbWVudC5jcHAKaW5kZXggYWVjMmRiZjczMGEzZDE2MjVmOTk2NmI4
NjM3YWMwOTJmODFlOGQ0Ni4uMTFmYTgxNWJjZGNjNTg4Njc3ZDI1OGRlNjVmNDIyZGQ2YWYyNzcz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW50ZW50RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW50ZW50RWxlbWVudC5jcHAKQEAgLTQ0LDYg
KzQ0LDcgQEAgSFRNTEludGVudEVsZW1lbnQ6OkhUTUxJbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGludGVudFRhZykpOworICAg
IHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxJbnRlbnRFbGVt
ZW50PiBIVE1MSW50ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAppbmRleCA5Mjc0MTBiOWExMjE2MTE4YmMwNzc3NWEzODBiN2FhYzZjNzEyNDQ5Li5mZTMz
ZTcxOTExYzVkNTBiMTU2MThlNDRlYmE0MzlmYjcxNzRiZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3IEBAIGlubGluZSBIVE1MTGlua0Vs
ZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCoKICAgICAsIG1fcGVuZGluZ1NoZWV0VHlwZShOb25lKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKGxpbmtUYWcpKTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxMaW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IDUwNzNlODll
MTI2YjhlYTRjOTVhNzVlNTllYzI0MzJjYjdmNzRjNmIuLmZmNTYyMTUzMmVhNzczZjQ2MDM5YmQ3
NWIyMjM1ZTcwM2QxNDY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3Bw
CkBAIC00Miw2ICs0Miw3IEBAIEhUTUxNYXBFbGVtZW50OjpIVE1MTWFwRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtYXBUYWcp
KTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MTWFw
RWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggYjFmMzUwMTllOTA5NWMwZmRi
ZWVkMmQwNjJmN2M1MGMyYmM0MjRhZS4uYzhkNmRiMjhkOWMzMGMzNzBjOTk1MTY1NzBiMzcxZDc0
YjNkYTljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcApAQCAtMzUs
NiArMzUsNyBAQCBpbmxpbmUgSFRNTE1ldGFFbGVtZW50OjpIVE1MTWV0YUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqCiAgICAgOiBIVE1MRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtZXRhVGFnKSk7CisgICAg
c2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1ldGFFbGVtZW50
PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCmluZGV4IGUzYmUwNjZhNGY1Y2JiYTkxYjAyNDFmNDZiYzk5ODRmNDdhNDljNzcuLjEzZmRl
OGU5YjUzZDEzODcxYTBmMTY2YTNhYTdkZjM0NjljYmI4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC01OSw2ICs1OSw3IEBAIGlubGluZSBIVE1MT2Jq
ZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lCiAgICAgLCBtX3VzZUZhbGxiYWNrQ29udGVudChmYWxzZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShvYmplY3RUYWcpKTsKKyAgICBBU1NFUlQoaGFzQ3VzdG9tQ2FsbGJhY2tz
KCkpOwogICAgIHNldEZvcm0oZm9ybSA/IGZvcm0gOiBmaW5kRm9ybUFuY2VzdG9yKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDdiY2U4ZTYx
NDY3YTBmZjA3YTY2MzcwMGE0MGFmMjIxOGM4ZDhiNTUuLmNiYzAxM2ZiMTBmMWFlYWJjNWM2Zjlm
OWM3ZjcyMTk2YTc1NzYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwCkBAIC01NCw2ICs1NCw3IEBAIEhUTUxPcHRpb25FbGVtZW50OjpIVE1MT3B0aW9uRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jCiAgICAgLCBt
X2lzU2VsZWN0ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob3B0aW9uVGFnKSk7
CisgICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE9wdGlv
bkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKaW5kZXggY2Q3MjExNTQzYTc1
Y2ExYmU3OTRhMzAzZDFhNzg3ZDgyNGNmZWNjNi4uNmI0ZTY1NWZkMzgwYjEwNTFmYmQzOWZhNzM2
NWFlMmE4MjJiYzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3Bw
CkBAIC0zNCw2ICszNCw3IEBAIGlubGluZSBIVE1MUXVvdGVFbGVtZW50OjpIVE1MUXVvdGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShxVGFnKSB8
fCBoYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKTsKKyAgICBzZXRIYXNDdXN0b21DYWxsYmFja3Mo
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MUXVvdGVFbGVtZW50PiBIVE1MUXVvdGVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAppbmRleCBkNTM1ODRlZmFj
NTE2YzRjZjkyMmYwMjQ4MDE1ZWFiZWY0NjNkOGI0Li44YzhjNTI4NmJkZGJhZGZkNjc2MDdiNTY4
MjFlODk3Y2FjYjFlOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcApAQCAtNDAsNiArNDAsNyBAQCBpbmxpbmUgSFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3Jp
cHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogICAgICwgU2Ny
aXB0RWxlbWVudCh0aGlzLCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5U3RhcnRlZCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShzY3JpcHRUYWcpKTsKKyAgICBzZXRIYXNDdXN0b21DYWxs
YmFja3MoKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYjRlZmVlMTJmOThl
YzllNDAzZTU5ZjY3ZWUxYjhjYjdmYzhjMTkwOC4uNzg1OTA5YTNlM2E1YThhODY3MmRiZjdiNjg5
NTFiNjliYjNhZTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKQEAgLTc5LDYgKzc5LDcgQEAgSFRNTFNlbGVjdEVsZW1lbnQ6OkhUTUxTZWxlY3RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MKICAgICAsIG1fc2hv
dWxkUmVjYWxjTGlzdEl0ZW1zKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNlbGVj
dFRhZykpOworICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxTZWxlY3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAppbmRleCAyYjMzMWM4
YmI2YWU3YjMxOTU1MWQ5NDk4YjczZjY2ODcyNjdlZGJlLi4xMTQ4NTE3NjkwYTQ0YjdiNDU0NjQ0
ZTIxYWUxNWMzMDgyOWUxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVt
ZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQCBpbmxpbmUgSFRNTFNvdXJjZUVsZW1lbnQ6OkhUTUxT
b3VyY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogewogICAg
IExPRyhNZWRpYSwgIkhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudCAtICVwIiwg
dGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc291cmNlVGFnKSk7CisgICAgc2V0SGFzQ3Vz
dG9tQ2FsbGJhY2tzKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IEhUTUxT
b3VyY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5k
ZXggMTk1ZmQ1MGM0Njk5NDIyMzY3NjU0OGNjN2NmZTliYjhlNzQzMjk2ZC4uNDE1ZDY4MjMwMTM0
Y2ExYmU3NGJhNTgxMWQ0NTQ3MjE1Zjc2YzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwCkBAIC01NCw2ICs1NCw3IEBAIGlubGluZSBIVE1MU3R5bGVFbGVtZW50
OjpIVE1MU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
CiAjZW5kaWYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzdHlsZVRhZykpOworICAgIHNldEhh
c0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBIVE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxl
bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IDY0MTA5NzE3YzM5MzZhNTQ5ZGMyYjU4ZjliN2QyODQwYWE3NDNlYWMu
LmU1ZDQzNzQ3N2UwZDYwOGE2MjExMGZiNjU1OWJjNTY2Y2IyMzAxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC01OSw2
ICs1OSw3IEBAIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlv
bkVuZCgtMSkKICAgICAsIG1fY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKFNlbGVjdGlvbkhhc05v
RGlyZWN0aW9uKQogeworICAgIEFTU0VSVChoYXNDdXN0b21DYWxsYmFja3MoKSk7CiB9CiAKIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKaW5kZXggMGE3M2FkMWI2MDMx
MjMzZmRkZDAyMmY0N2IzOTYyMGVlODZjZjIyZC4uYWFkZGNkMGNmNzJlNDZhNzRiMmJkMTllYTky
ZGNjY2Q1ZTliN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
CkBAIC0zNyw2ICszNyw3IEBAIGlubGluZSBIVE1MVGl0bGVFbGVtZW50OjpIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRh
ZykpOworICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxU
aXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcAppbmRleCA2NGIxOWE4OGI1NmZjMGZiOTU4MzkxODA4M2JiODEyMzQ1MTY1
NjRlLi4yZmZkZmVkZDY2NGM2NzM5ZTYxZmM0MjVmZjY2NDlhODRmYzBiNzMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgaW5saW5l
IEhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQKIHsKICAgICBMT0coTWVkaWEsICJIVE1MVHJhY2tFbGVtZW50OjpI
VE1MVHJhY2tFbGVtZW50IC0gJXAiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0cmFj
a1RhZykpOworICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBIVE1MVHJhY2tFbGVt
ZW50Ojp+SFRNTFRyYWNrRWxlbWVudCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>