<?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>120908</bug_id>
          
          <creation_ts>2013-09-06 16:22:59 -0700</creation_ts>
          <short_desc>Range::ownerDocument should return Document&amp;</short_desc>
          <delta_ts>2013-09-09 14:37:11 -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>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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>925906</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-06 16:22:59 -0700</bug_when>
    <thetext>I&apos;m late to the party but Range::ownerDocument() is always non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925907</commentid>
    <comment_count>1</comment_count>
      <attachid>210814</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-06 16:25:54 -0700</bug_when>
    <thetext>Created attachment 210814
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925909</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-06 16:27:22 -0700</bug_when>
    <thetext>Attachment 210814 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/objc/DOM.mm&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/Range.h&apos;, u&apos;Source/WebCore/editing/AlternativeTextController.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextCheckingHelper.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/page/DragController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/InPageSearchManager.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebPDFView.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.mm&apos;]&quot; exit_code: 1
Source/WebCore/page/DragController.cpp:126:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 1 in 21 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>925910</commentid>
    <comment_count>3</comment_count>
      <attachid>210814</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-06 16:28:28 -0700</bug_when>
    <thetext>Comment on attachment 210814
Cleanup

Awesome! r=me, have fun with EWS :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925965</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-06 19:07:18 -0700</bug_when>
    <thetext>Committed as https://trac.webkit.org/r155228.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926531</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-08 19:02:26 -0700</bug_when>
    <thetext>Do our DOM bindings now support turning references into JavaScript objects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926532</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-08 19:06:42 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Do our DOM bindings now support turning references into JavaScript objects?

Not yet. Range::ownerDocument is not exposed to the web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926541</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-08 19:37:25 -0700</bug_when>
    <thetext>Seems like we should just name it document, then. What additional clarity is added by calling it “owner document”.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210814</attachid>
            <date>2013-09-06 16:25:54 -0700</date>
            <delta_ts>2013-09-06 16:28:28 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>fix120908</filename>
            <type>text/plain</type>
            <size>28438</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA5LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJhbmdlOjpvd25lckRvY3VtZW50
IHNob3VsZCByZXR1cm4gRG9jdW1lbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjA5MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXR1cm4gRG9jdW1lbnQmIGluIFJhbmdlOjpvd25lckRvY3VtZW50
KCkuIEFsc28gbWFrZSBzZXREb2N1bWVudCB0YWtlIERvY3VtZW50JiBzbyB0aGF0IHRoaXMgaW52
YXJpYW50IGlzIHNlbGYtZXZpZGVudC4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1t
OgorICAgICAgICAoLVtET01SYW5nZSBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtET01SYW5n
ZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2Ug
dGV4dFJlY3RzXSk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2V0U3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNldEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6c2VsZWN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2VsZWN0Tm9kZUNv
bnRlbnRzKToKKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVs
ZXRlQnV0dG9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjppc0ZyYW1lSW5SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1bmlvbkRP
TVJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjp1bmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6CisgICAg
ICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRS
YW5nZVRvV3JhcHBpbmdOb2Rlcyk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZy
YWdtZW50RnJvbVRleHQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJhbmdlT2ZTdHJpbmcpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEZvclJhbmdlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmFkZFRl
eHRNYXRjaE1hcmtlcik6CisKIDIwMTMtMDktMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZmFzdE5ldy9mYXN0RGVsZXRlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxOSwxNCAr
MzE5LDE0IEBACiAtIChOU1JlY3QpYm91bmRpbmdCb3gKIHsKICAgICAvLyBGSVhNRTogVGhlIGNh
bGwgdG8gdXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzIHNob3VsZCBiZSBtb3Zl
ZCBpbnRvIFdlYkNvcmU6OlJhbmdlLgotICAgIGNvcmUoc2VsZiktPm93bmVyRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY29yZShzZWxmKS0+
b3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
ICAgIHJldHVybiBjb3JlKHNlbGYpLT5ib3VuZGluZ0JveCgpOwogfQogCiAtIChOU0ltYWdlICop
cmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQKIHsKICAg
ICBXZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgV2ViQ29yZTo6
RnJhbWUqIGZyYW1lID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMzNyw3ICszMzcsNyBAQAogewogICAg
IC8vIEZJWE1FOiBUaGUgY2FsbCB0byB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMgc2hvdWxkIGJlIG1vdmVkIGludG8gV2ViQ29yZTo6UmFuZ2UuCiAgICAgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+IHJlY3RzOwotICAgIGNvcmUoc2VsZiktPm93bmVyRG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgY29yZShzZWxmKS0+b3du
ZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAg
IGNvcmUoc2VsZiktPnRleHRSZWN0cyhyZWN0cyk7CiAgICAgcmV0dXJuIGtpdChyZWN0cyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHJldmlzaW9uIDE1NDk5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxNCArMTE2LDE0IEBACiAj
ZW5kaWYKIH0KIAotdm9pZCBSYW5nZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
dm9pZCBSYW5nZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIEFTU0VS
VChtX293bmVyRG9jdW1lbnQgIT0gZG9jdW1lbnQpOworICAgIEFTU0VSVChtX293bmVyRG9jdW1l
bnQgIT0gJmRvY3VtZW50KTsKICAgICBpZiAobV9vd25lckRvY3VtZW50KQogICAgICAgICBtX293
bmVyRG9jdW1lbnQtPmRldGFjaFJhbmdlKHRoaXMpOwotICAgIG1fb3duZXJEb2N1bWVudCA9IGRv
Y3VtZW50OwotICAgIG1fc3RhcnQuc2V0VG9TdGFydE9mTm9kZShkb2N1bWVudCk7Ci0gICAgbV9l
bmQuc2V0VG9TdGFydE9mTm9kZShkb2N1bWVudCk7CisgICAgbV9vd25lckRvY3VtZW50ID0gJmRv
Y3VtZW50OworICAgIG1fc3RhcnQuc2V0VG9TdGFydE9mTm9kZSgmZG9jdW1lbnQpOworICAgIG1f
ZW5kLnNldFRvU3RhcnRPZk5vZGUoJmRvY3VtZW50KTsKICAgICBtX293bmVyRG9jdW1lbnQtPmF0
dGFjaFJhbmdlKHRoaXMpOwogfQogCkBAIC0yMjQsNyArMjI0LDcgQEAKIAogICAgIGJvb2wgZGlk
TW92ZURvY3VtZW50ID0gZmFsc2U7CiAgICAgaWYgKCZyZWZOb2RlLT5kb2N1bWVudCgpICE9IG1f
b3duZXJEb2N1bWVudCkgewotICAgICAgICBzZXREb2N1bWVudCgmcmVmTm9kZS0+ZG9jdW1lbnQo
KSk7CisgICAgICAgIHNldERvY3VtZW50KHJlZk5vZGUtPmRvY3VtZW50KCkpOwogICAgICAgICBk
aWRNb3ZlRG9jdW1lbnQgPSB0cnVlOwogICAgIH0KIApAQCAtMjUzLDcgKzI1Myw3IEBACiAKICAg
ICBib29sIGRpZE1vdmVEb2N1bWVudCA9IGZhbHNlOwogICAgIGlmICgmcmVmTm9kZS0+ZG9jdW1l
bnQoKSAhPSBtX293bmVyRG9jdW1lbnQpIHsKLSAgICAgICAgc2V0RG9jdW1lbnQoJnJlZk5vZGUt
PmRvY3VtZW50KCkpOworICAgICAgICBzZXREb2N1bWVudChyZWZOb2RlLT5kb2N1bWVudCgpKTsK
ICAgICAgICAgZGlkTW92ZURvY3VtZW50ID0gdHJ1ZTsKICAgICB9CiAKQEAgLTEzNDQsNyArMTM0
NCw3IEBACiAgICAgfQogCiAgICAgaWYgKG1fb3duZXJEb2N1bWVudCAhPSAmcmVmTm9kZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgc2V0RG9jdW1lbnQoJnJlZk5vZGUtPmRvY3VtZW50KCkpOworICAg
ICAgICBzZXREb2N1bWVudChyZWZOb2RlLT5kb2N1bWVudCgpKTsKIAogICAgIGVjID0gMDsKICAg
ICBzZXRTdGFydEJlZm9yZShyZWZOb2RlLCBlYyk7CkBAIC0xMzg5LDcgKzEzODksNyBAQAogICAg
IH0KIAogICAgIGlmIChtX293bmVyRG9jdW1lbnQgIT0gJnJlZk5vZGUtPmRvY3VtZW50KCkpCi0g
ICAgICAgIHNldERvY3VtZW50KCZyZWZOb2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgc2V0RG9j
dW1lbnQocmVmTm9kZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBtX3N0YXJ0LnNldFRvU3RhcnRPZk5v
ZGUocmVmTm9kZSk7CiAgICAgbV9lbmQuc2V0VG9FbmRPZk5vZGUocmVmTm9kZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaAkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gY3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+LCBjb25zdCBQb3NpdGlvbiYsIGNv
bnN0IFBvc2l0aW9uJik7CiAgICAgflJhbmdlKCk7CiAKLSAgICBEb2N1bWVudCogb3duZXJEb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJEb2N1bWVudC5nZXQoKTsgfQorICAgIERvY3Vt
ZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gKm1fb3duZXJEb2N1bWVudDsgfQog
ICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5jb250YWlu
ZXIoKTsgfQogICAgIGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQub2Zm
c2V0KCk7IH0KICAgICBOb2RlKiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2VuZC5j
b250YWluZXIoKTsgfQpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgZXhwbGljaXQgUmFuZ2UoUGFz
c1JlZlB0cjxEb2N1bWVudD4pOwogICAgIFJhbmdlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+LCBQYXNz
UmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyLCBpbnQgc3RhcnRPZmZzZXQsIFBhc3NSZWZQdHI8
Tm9kZT4gZW5kQ29udGFpbmVyLCBpbnQgZW5kT2Zmc2V0KTsKIAotICAgIHZvaWQgc2V0RG9jdW1l
bnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Jik7CiAKICAgICBO
b2RlKiBjaGVja05vZGVXT2Zmc2V0KE5vZGUqLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja05vZGVCQShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcs
NyArMzk3LDcgQEAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgUmFuZ2UqIHJh
bmdlV2l0aEFsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVy
bmF0aXZlLmdldCgpOwotICAgIGlmICghcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgfHwgbV9mcmFtZS5k
b2N1bWVudCgpICE9IHJhbmdlV2l0aEFsdGVybmF0aXZlLT5vd25lckRvY3VtZW50KCkpCisgICAg
aWYgKCFyYW5nZVdpdGhBbHRlcm5hdGl2ZSB8fCBtX2ZyYW1lLmRvY3VtZW50KCkgIT0gJnJhbmdl
V2l0aEFsdGVybmF0aXZlLT5vd25lckRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dChyYW5nZVdpdGhBbHRlcm5hdGl2ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsx
MTAsNiBAQAogICAgIGlmICghcmFuZ2UgfHwgIWNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKTsKLQog
ICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAg
aW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgTm9kZSogZW5kQ29u
dGFpbmVyID0gcmFuZ2UtPmVuZENvbnRhaW5lcigpOwpAQCAtMTM0LDcgKzEzMiw3IEBACiAgICAg
ICAgIGVuZE9mZnNldCA9IGVsZW1lbnQtPm5vZGVJbmRleCgpOwogICAgIH0KIAotICAgIHJldHVy
biBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVu
ZENvbnRhaW5lciwgZW5kT2Zmc2V0KTsKKyAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSgmcmFuZ2Ut
Pm93bmVyRG9jdW1lbnQoKSwgc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0LCBlbmRDb250YWlu
ZXIsIGVuZE9mZnNldCk7CiB9CiAKIFZpc2libGVTZWxlY3Rpb24gRWRpdG9yOjphdm9pZEludGVy
c2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbikgY29uc3QKQEAgLTI5MTUsNyArMjkxMyw3IEBACiB7CiAgICAgYm9vbCBpblJh
bmdlID0gZmFsc2U7CiAgICAgZm9yIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCA9IGZyYW1lLT5vd25lckVsZW1lbnQoKTsgb3duZXJFbGVtZW50OyBvd25lckVsZW1lbnQgPSBv
d25lckVsZW1lbnQtPmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCZv
d25lckVsZW1lbnQtPmRvY3VtZW50KCkgPT0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKSkgeworICAg
ICAgICBpZiAoJm93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKSA9PSAmcmFuZ2UtPm93bmVyRG9jdW1l
bnQoKSkgewogICAgICAgICAgICAgaW5SYW5nZSA9IHJhbmdlLT5pbnRlcnNlY3RzTm9kZShvd25l
ckVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTI5MzAsNyArMjkyOCw3IEBACiAKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdl
OwogICAgIGlmIChyYW5nZSkgewotICAgICAgICBpZiAocmFuZ2UtPm93bmVyRG9jdW1lbnQoKSA9
PSBtX2ZyYW1lLmRvY3VtZW50KCkpCisgICAgICAgIGlmICgmcmFuZ2UtPm93bmVyRG9jdW1lbnQo
KSA9PSBtX2ZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBzZWFyY2hSYW5nZSA9IHJhbmdl
OwogICAgICAgICBlbHNlIGlmICghaXNGcmFtZUluUmFuZ2UoJm1fZnJhbWUsIHJhbmdlKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsNyArMjcwLDcgQEAKICAgICBS
YW5nZSogc3RhcnQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX1NU
QVJULCBiLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA8PSAwID8gYSA6IGI7CiAgICAgUmFuZ2UqIGVu
ZCA9IGEtPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6RU5EX1RPX0VORCwgYiwgQVNTRVJU
X05PX0VYQ0VQVElPTikgPD0gMCA/IGIgOiBhOwogCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUo
YS0+b3duZXJEb2N1bWVudCgpLCBzdGFydC0+c3RhcnRDb250YWluZXIoKSwgc3RhcnQtPnN0YXJ0
T2Zmc2V0KCksIGVuZC0+ZW5kQ29udGFpbmVyKCksIGVuZC0+ZW5kT2Zmc2V0KCkpOworICAgIHJl
dHVybiBSYW5nZTo6Y3JlYXRlKCZhLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LT5zdGFydENvbnRh
aW5lcigpLCBzdGFydC0+c3RhcnRPZmZzZXQoKSwgZW5kLT5lbmRDb250YWluZXIoKSwgZW5kLT5l
bmRPZmZzZXQoKSk7CiB9CiAKIC8vIEV4ZWN1dGUgY29tbWFuZCBmdW5jdGlvbnMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAJKHJldmlzaW9u
IDE1NDk5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDE0ICs2MzMsNyBAQAogCiBib29sIFRleHRDaGVja2lu
Z0hlbHBlcjo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X3JhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogZG9jID0gbV9y
YW5nZS0+b3duZXJEb2N1bWVudCgpOwotICAgIGlmICghZG9jKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChkb2Mt
PmZyYW1lKCkpOworICAgIHJldHVybiBtX3JhbmdlICYmIFdlYkNvcmU6OnVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobV9yYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkpOwogfQogCiB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVD
aGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTM1LDggKzI1MzUsOCBAQAogCiAg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgIGlmIChpc0Rpc3Bs
YXlTdHJpbmcgJiYgci0+b3duZXJEb2N1bWVudCgpKQotICAgICAgICByLT5vd25lckRvY3VtZW50
KCktPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcocmVzdWx0KTsKKyAgICBpZiAoaXNE
aXNwbGF5U3RyaW5nKQorICAgICAgICByLT5vd25lckRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhyZXN1bHQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1
NTcsNyArMjU1Nyw3IEBACiAKICAgICBpZiAoYnVmZmVyLm5lZWRzTW9yZUNvbnRleHQoKSkgewog
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBpdC5yYW5nZSgpOwotICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGJlZm9yZVN0YXJ0UmFuZ2UgPSBzdGFydFJhbmdlLT5vd25lckRvY3VtZW50
KCktPmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gYmVmb3JlU3RhcnRSYW5n
ZSA9IHN0YXJ0UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwogICAgICAgICBi
ZWZvcmVTdGFydFJhbmdlLT5zZXRFbmQoc3RhcnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgc3Rh
cnRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIGZvciAo
U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBiYWNrd2FyZHNJdGVyYXRvcihiZWZvcmVT
dGFydFJhbmdlLmdldCgpKTsgIWJhY2t3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGJhY2t3YXJkc0l0
ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICAgICAgYnVmZmVyLnByZXBlbmRDb250ZXh0KGJh
Y2t3YXJkc0l0ZXJhdG9yLmNoYXJhY3RlcnMoKSwgYmFja3dhcmRzSXRlcmF0b3IubGVuZ3RoKCkp
OwpAQCAtMjU5NCw3ICsyNTk0LDcgQEAKIFBhc3NSZWZQdHI8UmFuZ2U+IGZpbmRQbGFpblRleHQo
Y29uc3QgUmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICAvLyBDaGFyYWN0ZXJJdGVyYXRvciByZXF1aXJlcyByZW5kZXJlcnMgdG8g
YmUgdXAtdG8tZGF0ZQotICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OworICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKICAgICAvLyBG
aXJzdCwgZmluZCB0aGUgdGV4dC4KICAgICBzaXplX3QgbWF0Y2hTdGFydDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcx
LDcgKzU3MSw3IEBACiAgICAgICAgIHJldHVybiByYW5nZTsKIAogICAgIC8vIENyZWF0ZSBuZXcg
cmFuZ2Ugd2l0aCB0aGUgaGlnaGVzdCBlZGl0YWJsZSBub2RlIGNvbnRhaW5lZCB3aXRoaW4gdGhl
IHJhbmdlCi0gICAgUmVmUHRyPFJhbmdlPiBleHRlbmRlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShy
YW5nZS0+b3duZXJEb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGV4dGVuZGVkUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCZyYW5nZS0+b3duZXJEb2N1bWVudCgpKTsKICAgICBleHRlbmRlZFJh
bmdlLT5zZWxlY3ROb2RlKGhpZ2hlc3ROb2RlLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICByZXR1
cm4gZXh0ZW5kZWRSYW5nZS5yZWxlYXNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNywxNiArNjM3LDEzIEBACiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSByYW5nZS0+b3duZXJEb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotCisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gcmFuZ2Ut
Pm93bmVyRG9jdW1lbnQoKTsKICAgICBjb25zdCBSYW5nZSogdXBkYXRlZFJhbmdlID0gcmFuZ2U7
CiAKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgLy8gRGlzYWJsZSB0aGUgZGVsZXRlIGJ1
dHRvbiBzbyBpdCdzIGVsZW1lbnRzIGFyZSBub3Qgc2VyaWFsaXplZCBpbnRvIHRoZSBtYXJrdXAs
CiAgICAgLy8gYnV0IG1ha2Ugc3VyZSBuZWl0aGVyIGVuZHBvaW50IGlzIGluc2lkZSB0aGUgZGVs
ZXRlIHVzZXIgaW50ZXJmYWNlLgotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgp
OworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgRGVsZXRlQnV0dG9u
Q29udHJvbGxlckRpc2FibGVTY29wZSBkZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3Bl
KGZyYW1lKTsKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdlUmVmOwpAQCAtNjU4LDcg
KzY1NSw3IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gY3JlYXRlTWFya3VwSW50ZXJu
YWwoZG9jdW1lbnQsIHJhbmdlLCB1cGRhdGVkUmFuZ2UsIG5vZGVzLCBzaG91bGRBbm5vdGF0ZSwg
Y29udmVydEJsb2Nrc1RvSW5saW5lcywgc2hvdWxkUmVzb2x2ZVVSTHMpOworICAgIHJldHVybiBj
cmVhdGVNYXJrdXBJbnRlcm5hbCgmZG9jdW1lbnQsIHJhbmdlLCB1cGRhdGVkUmFuZ2UsIG5vZGVz
LCBzaG91bGRBbm5vdGF0ZSwgY29udmVydEJsb2Nrc1RvSW5saW5lcywgc2hvdWxkUmVzb2x2ZVVS
THMpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkK
QEAgLTg0MCw4ICs4MzcsOCBAQAogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0LT5vd25lckRvY3VtZW50KCk7Ci0g
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjb250ZXh0LT5vd25l
ckRvY3VtZW50KCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIAogICAgIGlmICh0ZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKQEAgLTg1MSw5ICs4NDgs
OSBAQAogICAgIHN0cmluZy5yZXBsYWNlKCdccicsICdcbicpOwogCiAgICAgaWYgKGNvbnRleHRQ
cmVzZXJ2ZXNOZXdsaW5lKCpjb250ZXh0KSkgewotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIEFTU0VSVF9OT19FWENFUFRJT04p
OworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
c3RyaW5nKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChzdHJpbmcuZW5kc1dp
dGgoJ1xuJykpIHsKLSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRl
QnJlYWtFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVt
ZW50ID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCk7CiAgICAgICAgICAgICBlbGVtZW50
LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7ICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNl
KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9CkBAIC04ODUsMTYgKzg4MiwxNiBA
QAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKICAgICAgICAgaWYgKHMuaXNFbXB0
eSgpICYmIGkgKyAxID09IG51bUxpbmVzKSB7CiAgICAgICAgICAgICAvLyBGb3IgbGFzdCBsaW5l
LCB1c2UgdGhlICJtYWdpYyBCUiIgcmF0aGVyIHRoYW4gYSBQLgotICAgICAgICAgICAgZWxlbWVu
dCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAgICBlbGVtZW50ID0g
Y3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCk7CiAgICAgICAgICAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAodXNlTGluZUJyZWFrKSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlQnJl
YWtFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVCcmVha0Vs
ZW1lbnQoJmRvY3VtZW50KTsKICAgICAgICAgICAgIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKGZy
YWdtZW50LmdldCgpLCBzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICh1c2VD
bG9uZXNPZkVuY2xvc2luZ0Jsb2NrKQogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBibG9jay0+
Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50
KTsKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1l
bnQoJmRvY3VtZW50KTsKICAgICAgICAgICAgIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKGVsZW1l
bnQuZ2V0KCksIHMpOwogICAgICAgICB9CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChl
bGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxNSAr
MTIzLDEzIEBACiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmFnQ29udHJvbGxlcihwYWdlLCBj
bGllbnQpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1l
bnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwg
UmVmUHRyPFJhbmdlPiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCitzdGF0
aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdE
YXRhKERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSZWZQdHI8UmFuZ2U+IGNvbnRl
eHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIEFT
U0VSVChkcmFnRGF0YSk7CiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGNvbnRleHQtPm93bmVyRG9jdW1lbnQoKTsKLSAgICBBU1NFUlQoZG9j
dW1lbnQpOwotICAgIGlmIChkb2N1bWVudCAmJiBkcmFnRGF0YS0+Y29udGFpbnNDb21wYXRpYmxl
Q29udGVudCgpKSB7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY29udGV4dC0+b3duZXJEb2N1
bWVudCgpOworICAgIGlmIChkcmFnRGF0YS0+Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKSB7
CiAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJh
Z0RhdGEtPmFzRnJhZ21lbnQoZnJhbWUsIGNvbnRleHQsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBs
YWluVGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKQEAgLTEzOSw3ICsxMzcs
NyBAQAogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwogICAgICAgICAgICAgU3RyaW5nIHVybCA9
IGRyYWdEYXRhLT5hc1VSTChmcmFtZSwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywg
JnRpdGxlKTsKICAgICAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIFJlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9yID0gSFRNTEFuY2hvckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVt
ZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKCZkb2N1bWVudCk7CiAgICAg
ICAgICAgICAgICAgYW5jaG9yLT5zZXRIcmVmKHVybCk7CiAgICAgICAgICAgICAgICAgaWYgKHRp
dGxlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdGhlIHBsYWluIHRl
eHQgZmlyc3QgYmVjYXVzZSB0aGUgdXJsIG1pZ2h0IGJlIG5vcm1hbGl6ZWQgb3IgZXNjYXBlZC4K
QEAgLTE0OCw5ICsxNDYsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBhbmNob3JUZXh0ID0gZG9jdW1lbnQt
PmNyZWF0ZVRleHROb2RlKHRpdGxlKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gYW5j
aG9yVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKTsKICAgICAgICAgICAgICAg
ICBhbmNob3ItPmFwcGVuZENoaWxkKGFuY2hvclRleHQsIElHTk9SRV9FWENFUFRJT04pOwotICAg
ICAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OwogICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChhbmNob3IsIElHTk9SRV9F
WENFUFRJT04pOwogICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudC5nZXQoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUwNSw3ICs1MDMsNyBAQAogICAgIC8vIG1hbnVhbGx5IGNvbnRyb2xsaW5n
IGRyYWcgYmVoYXZpb3VyCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IHJhbmdlLT5v
d25lckRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3VwcHJl
c3NvciB2YWxpZGF0aW9uU3VwcHJlc3NvcihjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAgICAgaWYg
KGRyYWdJc01vdmUoaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCksIGRyYWdEYXRhKSB8fCBkcmFnQ2Fy
ZXQuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewogICAgICAgICBib29sIGNob3NlUGxhaW5U
ZXh0ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE1NDk5MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNCwxMSAr
NjM0LDExIEBACiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgaWYgKHJlZmVyZW5jZVJhbmdlICYmIHJlZmVyZW5jZVJhbmdlLT5vd25lckRvY3VtZW50
KCktPnBhZ2UoKSAhPSB0aGlzKQorICAgIGlmIChyZWZlcmVuY2VSYW5nZSAmJiByZWZlcmVuY2VS
YW5nZS0+b3duZXJEb2N1bWVudCgpLnBhZ2UoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGJvb2wgc2hvdWxkV3JhcCA9IG9wdGlvbnMgJiBXcmFwQXJvdW5kOwotICAgIEZyYW1l
KiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFuZ2UtPm93bmVyRG9jdW1lbnQo
KS0+ZnJhbWUoKSA6ICZtYWluRnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVuY2VS
YW5nZSA/IHJlZmVyZW5jZVJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSA6ICZtYWluRnJh
bWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAgIGRvIHsKICAgICAgICAg
aWYgKFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0
cmluZyh0YXJnZXQsIGZyYW1lID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9w
dGlvbnMgJiB+V3JhcEFyb3VuZCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTksOCArMTI1OSw3IEBA
CiAgICAgaWYgKCFyYW5nZSB8fCAhcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpCiAgICAgICAgIHJl
dHVybiBGbG9hdFJlY3QoKTsKIAotICAgIGlmIChyYW5nZS0+b3duZXJEb2N1bWVudCgpKQotICAg
ICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICByYW5nZS0+
b3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgVmVjdG9yPEZsb2F0UXVhZD4g
cXVhZHM7CiAgICAgcmFuZ2UtPnRleHRRdWFkcyhxdWFkcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxNTQ5OTIpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzMSw4ICs4MzEsOCBAQAog
CiB2b2lkIEludGVybmFsczo6YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiByYW5nZSwg
Ym9vbCBpc0FjdGl2ZSkKIHsKLSAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICByYW5nZS0+b3duZXJEb2N1bWVudCgp
LT5tYXJrZXJzKCkuYWRkVGV4dE1hdGNoTWFya2VyKHJhbmdlLCBpc0FjdGl2ZSk7CisgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKKyAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRUZXh0TWF0Y2hNYXJr
ZXIocmFuZ2UsIGlzQWN0aXZlKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZpZXdQ
b3NpdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2Rl
JiBlYykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTU1MjIy
KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDEzLTA5LTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJhbmdlOjpvd25lckRvY3VtZW50IHNob3VsZCByZXR1cm4gRG9jdW1l
bnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdFN1cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmROZXh0U3RyaW5nKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1hcmtUZXh0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5QYWdlU2VhcmNoTWFuYWdlcjo6Y2xl
YXJUZXh0TWF0Y2hlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNlYXJj
aE1hbmFnZXI6OnNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6SW5QYWdlU2VhcmNoTWFuYWdlcjo6ZnJhbWVVbmxvYWRlZCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hl
cyk6CisKIDIwMTMtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBjb2RlIGJlaGluZCBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblBhZ2VTZWFyY2hNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU0OTkyKQorKysgU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICAgICBzdGFydEZyb21TZWxlY3Rp
b24gPSB0cnVlOwogICAgIH0KIAotICAgIEZyYW1lKiBjdXJyZW50QWN0aXZlTWF0Y2hGcmFtZSA9
IHNlbGVjdGlvbi5pc05vbmUoKSAmJiBtX2FjdGl2ZU1hdGNoID8gbV9hY3RpdmVNYXRjaC0+b3du
ZXJEb2N1bWVudCgpLT5mcmFtZSgpIDogbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICBGcmFtZSogY3VycmVudEFjdGl2ZU1hdGNoRnJhbWUgPSBzZWxlY3Rpb24uaXNOb25lKCkg
JiYgbV9hY3RpdmVNYXRjaCA/IG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS5mcmFtZSgp
IDogbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIGlmIChmaW5kQW5kTWFy
a1RleHQodGV4dCwgc2VhcmNoU3RhcnRpbmdQb2ludC5nZXQoKSwgY3VycmVudEFjdGl2ZU1hdGNo
RnJhbWUsIGZpbmRPcHRpb25zLCBuZXdTZWFyY2gsIHN0YXJ0RnJvbVNlbGVjdGlvbikpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgICAgICAgICAgICAgLy8g
Tm90IGhpZ2hsaWdodGluZyBhbGwgbWF0Y2hlcywgd2UgbmVlZCB0byBhZGQgdGhlIG1hcmtlciBo
ZXJlLAogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc2NvcGVTdHJpbmdNYXRjaGVzIGRvZXMg
bm90IGFkZCBhbnkgbWFya2VycywgaXQgb25seSBjb3VudHMgdGhlIG51bWJlci4KICAgICAgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVubWFya0FsbFRleHRNYXRjaGVzLCBpdCBpcyBhbHJlYWR5
IGRvbmUgZnJvbSB0aGUgY2FsbGVyIGJlY2F1c2Ugb2YgbmV3U2VhcmNoCi0gICAgICAgICAgICAg
ICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkVGV4dE1hdGNo
TWFya2VyKG1fYWN0aXZlTWF0Y2guZ2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIG1fYWN0
aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkVGV4dE1hdGNoTWFya2VyKG1f
YWN0aXZlTWF0Y2guZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICov
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjIyLDcgKzIy
Miw3IEBACiAgICAgICAgICAgICAvLyBXaGVuIG9ubHkgc2hvd2luZyBzaW5nbGUgbWF0Y2hlcywg
dGhlIHNjb3BpbmcgZWZmb3J0IHdvbid0IGhpZ2hsaWdodAogICAgICAgICAgICAgLy8gYWxsIG1h
dGNoZXMgYnV0IGNvdW50IHRoZW0uCiAgICAgICAgICAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+dW5t
YXJrQWxsVGV4dE1hdGNoZXMoKTsKLSAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9j
dW1lbnQoKS0+bWFya2VycygpLmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2ZU1hdGNoLmdldCgp
LCB0cnVlKTsKKyAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS5tYXJr
ZXJzKCkuYWRkVGV4dE1hdGNoTWFya2VyKG1fYWN0aXZlTWF0Y2guZ2V0KCksIHRydWUpOwogICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8pOwogICAgICAgICB9CiAKQEAgLTIzNSw3ICsyMzUsNyBA
QAogewogICAgIGlmIChzZWxlY3RBY3RpdmVNYXRjaE9uQ2xlYXIgJiYgbV9hY3RpdmVNYXRjaC5n
ZXQoKSkgewogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihtX2FjdGl2ZU1hdGNo
LmdldCgpKTsKLSAgICAgICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgp
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICAgICAgbV9hY3RpdmVN
YXRjaC0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihz
ZWxlY3Rpb24pOwogICAgIH0KICAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+dW5tYXJrQWxsVGV4dE1h
dGNoZXMoKTsKICAgICBtX2FjdGl2ZU1hdGNoID0gMDsKQEAgLTI0NiwxNiArMjQ2LDEyIEBACiB2
b2lkIEluUGFnZVNlYXJjaE1hbmFnZXI6OnNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKFBhc3NSZWZQ
dHI8UmFuZ2U+IHJhbmdlKQogewogICAgIC8vIENsZWFyIHRoZSBvbGQgbWFya2VyLCB1cGRhdGUg
b3VyIHJhbmdlLCBhbmQgaGlnaGxpZ2h0IHRoZSBuZXcgcmFuZ2UuCi0gICAgaWYgKG1fYWN0aXZl
TWF0Y2guZ2V0KCkpIHsKLSAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBtX2FjdGl2ZU1hdGNo
LT5vd25lckRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2MtPm1hcmtlcnMoKS5zZXRNYXJrZXJz
QWN0aXZlKG1fYWN0aXZlTWF0Y2guZ2V0KCksIGZhbHNlKTsKLSAgICB9CisgICAgaWYgKG1fYWN0
aXZlTWF0Y2guZ2V0KCkpCisgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS5t
YXJrZXJzKCkuc2V0TWFya2Vyc0FjdGl2ZShtX2FjdGl2ZU1hdGNoLmdldCgpLCBmYWxzZSk7CiAK
ICAgICBtX2FjdGl2ZU1hdGNoID0gcmFuZ2U7Ci0gICAgaWYgKG1fYWN0aXZlTWF0Y2guZ2V0KCkp
IHsKLSAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBtX2FjdGl2ZU1hdGNoLT5vd25lckRvY3Vt
ZW50KCkpCi0gICAgICAgICAgICBkb2MtPm1hcmtlcnMoKS5zZXRNYXJrZXJzQWN0aXZlKG1fYWN0
aXZlTWF0Y2guZ2V0KCksIHRydWUpOwotICAgIH0KKyAgICBpZiAobV9hY3RpdmVNYXRjaC5nZXQo
KSkKKyAgICAgICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgpLm1hcmtlcnMoKS5zZXRN
YXJrZXJzQWN0aXZlKG1fYWN0aXZlTWF0Y2guZ2V0KCksIHRydWUpOwogfQogCiB2b2lkIEluUGFn
ZVNlYXJjaE1hbmFnZXI6OmZyYW1lVW5sb2FkZWQoY29uc3QgRnJhbWUqIGZyYW1lKQpAQCAtMjcz
LDcgKzI2OSw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBGcmFtZSogY3VycmVu
dEFjdGl2ZU1hdGNoRnJhbWUgPSBtX2FjdGl2ZU1hdGNoLT5vd25lckRvY3VtZW50KCktPmZyYW1l
KCk7CisgICAgRnJhbWUqIGN1cnJlbnRBY3RpdmVNYXRjaEZyYW1lID0gbV9hY3RpdmVNYXRjaC0+
b3duZXJEb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKGN1cnJlbnRBY3RpdmVNYXRjaEZyYW1l
ID09IGZyYW1lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHJlLXNjb3BlIHRoaXMg
ZnJhbWUgaW5zdGVhZCBvZiBjYW5jZWxsaW5nIGFsbCBlZmZvcnQ/CiAgICAgICAgIGNhbmNlbFBl
bmRpbmdTY29waW5nRWZmb3J0KCk7CkBAIC0zMDIsNyArMjk4LDcgQEAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChtX3Jlc3VtZVNjb3BpbmdGcm9tUmFuZ2UgJiYgc2NvcGluZ0Zy
YW1lICE9IG1fcmVzdW1lU2NvcGluZ0Zyb21SYW5nZS0+b3duZXJEb2N1bWVudCgpLT5mcmFtZSgp
KQorICAgIGlmIChtX3Jlc3VtZVNjb3BpbmdGcm9tUmFuZ2UgJiYgc2NvcGluZ0ZyYW1lICE9IG1f
cmVzdW1lU2NvcGluZ0Zyb21SYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAg
IG1fcmVzdW1lU2NvcGluZ0Zyb21SYW5nZSA9IDA7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHNlYXJj
aFJhbmdlKHJhbmdlT2ZDb250ZW50cyhzY29waW5nRnJhbWUtPmRvY3VtZW50KCkpKTsKQEAgLTM0
Myw3ICszMzksNyBAQAogICAgICAgICAgICAgbV9hY3RpdmVNYXRjaEluZGV4ID0gbV9hY3RpdmVN
YXRjaENvdW50ICsgbWF0Y2hDb3VudDsKICAgICAgICAgfQogICAgICAgICBpZiAoIWxvY2F0ZUFj
dGl2ZU1hdGNoT25seSAmJiBtX2hpZ2hsaWdodEFsbE1hdGNoZXMpCi0gICAgICAgICAgICByZXN1
bHRSYW5nZS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkVGV4dE1hdGNoTWFya2VyKHJl
c3VsdFJhbmdlLmdldCgpLCBmb3VuZEFjdGl2ZU1hdGNoKTsKKyAgICAgICAgICAgIHJlc3VsdFJh
bmdlLT5vd25lckRvY3VtZW50KCkubWFya2VycygpLmFkZFRleHRNYXRjaE1hcmtlcihyZXN1bHRS
YW5nZS5nZXQoKSwgZm91bmRBY3RpdmVNYXRjaCk7CiAKICAgICAgICAgc2VhcmNoUmFuZ2UtPnNl
dFN0YXJ0KHJlc3VsdFJhbmdlLT5lbmRDb250YWluZXIoZWMpLCByZXN1bHRSYW5nZS0+ZW5kT2Zm
c2V0KGVjKSwgZWMpOwogICAgICAgICBTaGFkb3dSb290KiBzaGFkb3dUcmVlUm9vdCA9IHNlYXJj
aFJhbmdlLT5zaGFkb3dSb290KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTUy
MjIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wOS0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSYW5nZTo6b3duZXJEb2N1bWVudCBzaG91bGQgcmV0dXJuIERvY3VtZW50Jgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlBERlZpZXcubW06CisgICAgICAgIChpc0ZyYW1lSW5SYW5nZSk6CisKIDIwMTMtMDktMDUg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbFZpZXc6
OmNoaWxkcmVuKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHJldmlzaW9uIDE1NDk5MikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjM3LDcg
KzYzNyw3IEBACiB7CiAgICAgQk9PTCBpblJhbmdlID0gTk87CiAgICAgZm9yIChIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGNvcmUoZnJhbWUpLT5vd25lckVsZW1lbnQoKTsg
b3duZXJFbGVtZW50OyBvd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQtPmRvY3VtZW50KCkuZnJh
bWUoKS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCZvd25lckVsZW1lbnQtPmRvY3Vt
ZW50KCkgPT0gY29yZShyYW5nZSktPm93bmVyRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoJm93
bmVyRWxlbWVudC0+ZG9jdW1lbnQoKSA9PSAmY29yZShyYW5nZSktPm93bmVyRG9jdW1lbnQoKSkg
ewogICAgICAgICAgICAgaW5SYW5nZSA9IFtyYW5nZSBpbnRlcnNlY3RzTm9kZTpraXQob3duZXJF
bGVtZW50KV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTU1MjIyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmFuZ2U6Om93bmVyRG9jdW1lbnQgc2hvdWxkIHJldHVybiBE
b2N1bWVudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDkwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAg
ICAgICgtW1dLRE9NUmFuZ2UgdGV4dFJlY3RzXSk6CisKIDIwMTMtMDktMDUgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDTUFLRV0gQWRkIGMrKzB4IGlu
dG8gQ1hYX0ZMQUdTIGFzIGEgZGVmYXVsdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2Uu
bW0JKHJldmlzaW9uIDE1NDk5MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyAr
MTQyLDcgQEAKIAogLSAoTlNBcnJheSAqKXRleHRSZWN0cwogewotICAgIF9pbXBsLT5vd25lckRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIF9p
bXBsLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzOwogICAgIF9pbXBsLT50ZXh0
UmVjdHMocmVjdHMpOwogICAgIHJldHVybiBXZWJLaXQ6OnRvTlNBcnJheShyZWN0cyk7Cg==
</data>
<flag name="review"
          id="232899"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>