<?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>121768</bug_id>
          
          <creation_ts>2013-09-22 14:01:29 -0700</creation_ts>
          <short_desc>CTTE: RenderNamedFlowThread and FlowThreadController should operate on Elements, not Nodes</short_desc>
          <delta_ts>2013-10-07 06:02: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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaerean</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931924</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 14:01:29 -0700</bug_when>
    <thetext>CTTE: RenderNamedFlowThread and FlowThreadController should operate on Elements, not Nodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931925</commentid>
    <comment_count>1</comment_count>
      <attachid>212306</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 14:07:52 -0700</bug_when>
    <thetext>Created attachment 212306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931926</commentid>
    <comment_count>2</comment_count>
      <attachid>212306</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-22 14:15:26 -0700</bug_when>
    <thetext>Comment on attachment 212306
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=212306&amp;action=review

r=me

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:556
&gt; +static bool isContainedInElements(Vector&lt;Element*&gt; others, Element* element)

&apos;others&apos; should be a const reference, we are making a silly copy here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931927</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-22 14:22:32 -0700</bug_when>
    <thetext>Committed r156250: &lt;http://trac.webkit.org/changeset/156250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937029</commentid>
    <comment_count>4</comment_count>
    <who name="Mihai Maerean">mmaerean</who>
    <bug_when>2013-10-07 06:02:57 -0700</bug_when>
    <thetext>According to the CSS Regions Specification (http://dev.w3.org/csswg/css-regions/#the-flow-into-property), you can collect nodes (not just elements) into a flow thread.

This bug is invalid.

The named flow thread below will only contain a text node, the child of the div marked .content.

&lt;style&gt;
.content {
  flow-into:flow content;
}
.region {
  flow-from:flow;
}
&lt;/style&gt;
&lt;div class=&quot;content&quot;&gt;some text&lt;/div&gt;
&lt;div class=&quot;region&quot;&gt;&lt;/div&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212306</attachid>
            <date>2013-09-22 14:07:52 -0700</date>
            <delta_ts>2013-09-22 14:15:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121768-20130922140751.patch</filename>
            <type>text/plain</type>
            <size>28420</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA5LTIyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogUmVuZGVyTmFtZWRGbG93VGhy
ZWFkIGFuZCBGbG93VGhyZWFkQ29udHJvbGxlciBzaG91bGQgb3BlcmF0ZSBvbiBFbGVtZW50cywg
bm90IE5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE3NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVucmVnaXN0
ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
aG91bGRNb3ZlVG9GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFy
U3R5bGVEZXJpdmVkRGF0YUJlZm9yZURldGFjaGluZ1JlbmRlcmVyKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICBVcGRhdGUgdG8gbmV3IG5hbWVzIGFuZCB0byBwYXNzIHRoaXMg
YXMgYSByZWZlcmVuY2UgdG8gdGhlIEZsb3dUaHJlYWRDb250cm9sbGVyLgorCisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIE1vdmUgaXNSZWdp
c3RlcmVkV2l0aE5hbWVkRmxvdygpIHRvIEVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vV2ViS2l0
TmFtZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0UmVn
aW9uc0J5Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93OjpnZXRDb250ZW50KToK
KyAgICAgICAgVXBkYXRlIGZvciBjb250ZW50Tm9kZXMoKSAtPiBjb250ZW50RWxlbWVudHMoKSBu
YW1lIGNoYW5nZS4gTW9kZXJuaXplIHRoZSBjb2RlIGEgYml0CisgICAgICAgIGFzIHdlbGwuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rmxvd1RocmVhZENvbnRyb2xsZXI6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rmxvd1RocmVhZENvbnRyb2xsZXI6OnVucmVnaXN0
ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFk
Q29udHJvbGxlcjo6aXNDb250ZW50RWxlbWVudFJlZ2lzdGVyZWRXaXRoQW55TmFtZWRGbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaDoKKyAgICAgICAgQ2hh
bmdlIHRoZSBOb2RlKiAtPiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1hcCB0byBhIEVsZW1lbnQq
IC0+IFJlbmRlck5hbWVkRmxvd1RocmVhZCouIFVwZGF0ZQorICAgICAgICBmdW5jdGlvbnMgdGFr
aW5nIE5vZGUqcyB0byB0YWtlIEVsZW1lbnQmcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkOjp+UmVuZGVyTmFtZWRGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6dW5yZWdpc3Rlck5h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxv
d1RocmVhZDo6aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNDb250YWlu
ZWRJbkVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHROb2RlSW5zaWRlQ29udGVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5n
ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAg
ICAgQ2hhbmdlIHRoZSBOYW1lZEZsb3dDb250ZW50IHNldCB0byBzdG9yZSBFbGVtZW50cyByYXRo
ZXIgdGhhbiBOb2Rlcy4gTGlrZSB3aXRoIEZsb3dUaHJlYWRDb250cm9sbGVyLAorICAgICAgICB1
cGRhdGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyB0byB0YWtlIEVsZW1lbnQmcyBpbnN0ZWFkIG9m
IE5vZGUqcywgcmVtb3ZpbmcgYXNzZXJ0cy4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNldFJl
Z2lvbk9iamVjdHNSZWdpb25TdHlsZSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IG5hbWVzLgor
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6bW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKToKKyAgICAgICAgUGFzcyB0aGUgRWxl
bWVudCBhbmQgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGFzIHJlZmVyZW5jZXMuCisKIDIwMTMtMDkt
MjIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEdpdmUgcHVy
aXR5IGhpbnRzIHRvIGNvbXBpbGVyIHRvIGF2b2lkIHBlbmFsaXppbmcgcmVwZWF0ZWQgY2FsbHMg
dG8gc29tZSBmdW5jdGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NTYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNjMsMTAgKzEzNjMsMTAgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlKgogI2VuZGlmCiB9CiAKLXZvaWQgRWxlbWVudDo6dW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnROb2RlKCkKK3ZvaWQgRWxlbWVudDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpICYmIGluTmFt
ZWRGbG93KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0gICAgICAgIGRvY3VtZW50KCku
cmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLnVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50Tm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmZsb3dU
aHJlYWRDb250cm9sbGVyKCkudW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCp0aGlz
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpsYXp5UmVhdHRhY2goU2hvdWxkU2V0QXR0YWNoZWQgc2hv
dWxkU2V0QXR0YWNoZWQpCkBAIC0yNjQ1LDcgKzI2NDUsNyBAQCBib29sIEVsZW1lbnQ6OnNob3Vs
ZE1vdmVUb0Zsb3dUaHJlYWQoY29uCiAgICAgaWYgKHN0eWxlVG9Vc2UuZmxvd1RocmVhZCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuICFpc1JlZ2lzdGVy
ZWRXaXRoTmFtZWRGbG93KCk7CisgICAgcmV0dXJuICFkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+
Zmxvd1RocmVhZENvbnRyb2xsZXIoKS5pc0NvbnRlbnRFbGVtZW50UmVnaXN0ZXJlZFdpdGhBbnlO
YW1lZEZsb3coKnRoaXMpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtp
dFJlZ2lvbk92ZXJzZXQoKSBjb25zdApAQCAtMjk3Miw3ICsyOTcyLDcgQEAgdm9pZCBFbGVtZW50
OjpyZXNldENvbXB1dGVkU3R5bGUoKQogCiB2b2lkIEVsZW1lbnQ6OmNsZWFyU3R5bGVEZXJpdmVk
RGF0YUJlZm9yZURldGFjaGluZ1JlbmRlcmVyKCkKIHsKLSAgICB1bnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudE5vZGUoKTsKKyAgICB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsK
ICAgICBjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKICAgICBjbGVhckJlZm9yZVBzZXVk
b0VsZW1lbnQoKTsKICAgICBjbGVhckFmdGVyUHNldWRvRWxlbWVudCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCShyZXZpc2lvbiAxNTYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjEsNyArNjYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFNw
ZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsK
IAotICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKCk7CisgICAgdm9pZCB1
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKIAogICAgIHZvaWQgY3JlYXRlVW5p
cXVlRWxlbWVudERhdGEoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTU2MjQ3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw2IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgog
I2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCkBAIC05NTksMTEgKzk1OCw2IEBAIGJvb2wgTm9kZTo6
Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCkgPyBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0
cnVlOwogfQogCi1ib29sIE5vZGU6OmlzUmVnaXN0ZXJlZFdpdGhOYW1lZEZsb3coKSBjb25zdAot
ewotICAgIHJldHVybiBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xs
ZXIoKS5pc0NvbnRlbnROb2RlUmVnaXN0ZXJlZFdpdGhBbnlOYW1lZEZsb3codGhpcyk7Ci19Ci0K
IEVsZW1lbnQqIE5vZGU6OnNoYWRvd0hvc3QoKSBjb25zdAogewogICAgIGlmIChTaGFkb3dSb290
KiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNp
b24gMTU2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjY0LDggKzI2NCw2IEBAIHB1YmxpYzoKICAgICBib29sIGluTmFtZWRGbG93KCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJbk5hbWVkRmxvd0ZsYWcpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21T
dHlsZVJlc29sdmVDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc0N1c3RvbVN0
eWxlUmVzb2x2ZUNhbGxiYWNrc0ZsYWcpOyB9CiAKLSAgICBib29sIGlzUmVnaXN0ZXJlZFdpdGhO
YW1lZEZsb3coKSBjb25zdDsKLQogICAgIGJvb2wgaGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyk7
IH0KICAgICB2b2lkIHNldEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKGJvb2wgZmxhZykgeyBz
ZXRGbGFnKGZsYWcsIEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyk7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAJKHJldmlzaW9uIDE1NjI0NykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTcsMTAgKzExNyw4IEBAIGludCBXZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdpb25J
bmQKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gV2ViS2l0TmFtZWRGbG93OjpnZXRSZWdpb25zQnlD
b250ZW50KE5vZGUqIGNvbnRlbnROb2RlKQogewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBy
ZWdpb25Ob2RlczsKLQogICAgIGlmICghY29udGVudE5vZGUpCi0gICAgICAgIHJldHVybiBTdGF0
aWNOb2RlTGlzdDo6YWRvcHQocmVnaW9uTm9kZXMpOworICAgICAgICByZXR1cm4gU3RhdGljTm9k
ZUxpc3Q6OmNyZWF0ZUVtcHR5KCk7CiAKICAgICBpZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQo
KSkKICAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CkBAIC0xMjgsNzEgKzEyNiw3NiBAQCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdlCiAgICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBk
ZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgogICAgIC8vIEJlY2F1
c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZl
cmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgogICAgIGlmICgh
bV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0
KHJlZ2lvbk5vZGVzKTsKKyAgICAgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjpjcmVhdGVFbXB0
eSgpOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gcmVnaW9uRWxlbWVudHM7CiAKICAgICBp
ZiAoaW5GbG93VGhyZWFkKGNvbnRlbnROb2RlLT5yZW5kZXJlcigpLCBtX3BhcmVudEZsb3dUaHJl
YWQpKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3Bh
cmVudEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAgZm9yIChSZW5kZXJS
ZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVy
ICE9IHJlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBmb3IgKGF1dG8gaXRlciA9
IHJlZ2lvbkxpc3QuYmVnaW4oKSwgZW5kID0gcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24g
PSAqaXRlcjsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBp
bmNsdWRlZCBpbiB0aGUgbGlzdC4KICAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNsdWRl
ZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQogICAg
ICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdp
b24taW50ZXJmYWNlCiAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5pc1BzZXVkb0VsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX3BhcmVu
dEZsb3dUaHJlYWQtPm9iamVjdEluRmxvd1JlZ2lvbihjb250ZW50Tm9kZS0+cmVuZGVyZXIoKSwg
cmVuZGVyUmVnaW9uKSkKLSAgICAgICAgICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQocmVuZGVy
UmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICAgICAgICAgIGlmIChtX3BhcmVudEZs
b3dUaHJlYWQtPm9iamVjdEluRmxvd1JlZ2lvbihjb250ZW50Tm9kZS0+cmVuZGVyZXIoKSwgcmVu
ZGVyUmVnaW9uKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChyZW5kZXJSZWdpb24tPmdlbmVy
YXRpbmdFbGVtZW50KCkpOworICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZChy
ZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZWdpb25Ob2Rl
cyk7CisgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZWdpb25FbGVtZW50cyk7CiB9
CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9ucygpCiB7
Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlZ2lvbk5vZGVzOwotCiAgICAgaWYgKG1fZmxv
d01hbmFnZXItPmRvY3VtZW50KCkpCiAgICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgLy8gVGhlIHJl
bmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRl
LgogICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBw
ZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNz
YXJ5LgogICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGlj
Tm9kZUxpc3Q6OmFkb3B0KHJlZ2lvbk5vZGVzKTsKKyAgICAgICAgcmV0dXJuIFN0YXRpY05vZGVM
aXN0OjpjcmVhdGVFbXB0eSgpOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gcmVnaW9uRWxl
bWVudHM7CiAKICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gbV9wYXJl
bnRGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IHJl
Z2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgIGZvciAoYXV0byBpdGVyID0gcmVnaW9uTGlz
dC5iZWdpbigpLCBlbmQgPSByZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0ZXI7CiAgICAg
ICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlz
dC4KICAgICAgICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJs
eSBzdXBwb3J0IHRoZSBSZWdpb24gaW50ZXJmYWNlCiAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZQogICAgICAgICBpZiAo
cmVuZGVyUmVnaW9uLT5pc1BzZXVkb0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVu
dCgpKTsKKyAgICAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7
CisgICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdF
bGVtZW50KCkpOwogICAgIH0KIAotICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQocmVn
aW9uTm9kZXMpOworICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQocmVnaW9uRWxlbWVu
dHMpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdldENvbnRl
bnQoKQogewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjb250ZW50Tm9kZXM7Ci0KICAgICBp
ZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSkKICAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICAv
LyBUaGUgcmVuZGVyZXIgbWF5IGJlIGRlc3Ryb3llZCBvciBjcmVhdGVkIGFmdGVyIHRoZSBzdHls
ZSB1cGRhdGUuCiAgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGNhbGxlZCBmcm9tIEpTLCB3aGVyZSB0
aGUgd3JhcHBlciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgTmFtZWRGbG93LCBubyBndWFyZCBp
cyBuZWNlc3NhcnkuCiAgICAgaWYgKCFtX3BhcmVudEZsb3dUaHJlYWQpCi0gICAgICAgIHJldHVy
biBTdGF0aWNOb2RlTGlzdDo6YWRvcHQoY29udGVudE5vZGVzKTsKKyAgICAgICAgcmV0dXJuIFN0
YXRpY05vZGVMaXN0OjpjcmVhdGVFbXB0eSgpOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4g
Y29udGVudEVsZW1lbnRzOwogCi0gICAgY29uc3QgTmFtZWRGbG93Q29udGVudE5vZGVzJiBjb250
ZW50Tm9kZXNMaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFkLT5jb250ZW50Tm9kZXMoKTsKLSAgICBm
b3IgKE5hbWVkRmxvd0NvbnRlbnROb2Rlczo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb250ZW50Tm9k
ZXNMaXN0LmJlZ2luKCk7IGl0ICE9IGNvbnRlbnROb2Rlc0xpc3QuZW5kKCk7ICsraXQpIHsKLSAg
ICAgICAgTm9kZSogbm9kZSA9ICppdDsKLSAgICAgICAgQVNTRVJUKG5vZGUtPmNvbXB1dGVkU3R5
bGUoKS0+Zmxvd1RocmVhZCgpID09IG1fcGFyZW50Rmxvd1RocmVhZC0+Zmxvd1RocmVhZE5hbWUo
KSk7Ci0gICAgICAgIGNvbnRlbnROb2Rlcy5hcHBlbmQobm9kZSk7CisgICAgY29uc3QgTmFtZWRG
bG93Q29udGVudEVsZW1lbnRzJiBjb250ZW50RWxlbWVudHNMaXN0ID0gbV9wYXJlbnRGbG93VGhy
ZWFkLT5jb250ZW50RWxlbWVudHMoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjb250ZW50RWxlbWVu
dHNMaXN0LmJlZ2luKCksIGVuZCA9IGNvbnRlbnRFbGVtZW50c0xpc3QuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gKml0OworICAgICAgICBBU1NF
UlQoZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9wYXJlbnRGbG93
VGhyZWFkLT5mbG93VGhyZWFkTmFtZSgpKTsKKyAgICAgICAgY29udGVudEVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KGNv
bnRlbnROb2Rlcyk7CisgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChjb250ZW50RWxl
bWVudHMpOwogfQogCiB2b2lkIFdlYktpdE5hbWVkRmxvdzo6c2V0UmVuZGVyZXIoUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTYyNDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsMjUgKzEwNiwyMiBAQCB2b2lkIEZsb3dUaHJlYWRDb250cm9s
bGVyOjpsYXlvdXRSZW5kZXJOCiAgICAgfQogfQogCi12b2lkIEZsb3dUaHJlYWRDb250cm9sbGVy
OjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKE5vZGUqIGNvbnRlbnROb2RlLCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIG5hbWVkRmxvdykKK3ZvaWQgRmxvd1RocmVhZENvbnRyb2xsZXI6OnJl
Z2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW1lbnQsIFJl
bmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93KQogewotICAgIEFTU0VSVChjb250ZW50Tm9k
ZSAmJiBjb250ZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlQobmFtZWRGbG93
KTsKLSAgICBBU1NFUlQoIW1fbWFwTmFtZWRGbG93Q29udGVudE5vZGVzLmNvbnRhaW5zKGNvbnRl
bnROb2RlKSk7Ci0gICAgQVNTRVJUKCFuYW1lZEZsb3ctPmhhc0NvbnRlbnROb2RlKGNvbnRlbnRO
b2RlKSk7Ci0gICAgbV9tYXBOYW1lZEZsb3dDb250ZW50Tm9kZXMuYWRkKGNvbnRlbnROb2RlLCBu
YW1lZEZsb3cpOwotICAgIG5hbWVkRmxvdy0+cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShj
b250ZW50Tm9kZSk7CisgICAgQVNTRVJUKCFtX21hcE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50LmNv
bnRhaW5zKCZjb250ZW50RWxlbWVudCkpOworICAgIEFTU0VSVCghbmFtZWRGbG93Lmhhc0NvbnRl
bnRFbGVtZW50KGNvbnRlbnRFbGVtZW50KSk7CisgICAgbV9tYXBOYW1lZEZsb3dDb250ZW50RWxl
bWVudC5hZGQoJmNvbnRlbnRFbGVtZW50LCAmbmFtZWRGbG93KTsKKyAgICBuYW1lZEZsb3cucmVn
aXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChjb250ZW50RWxlbWVudCk7CiB9CiAKLXZvaWQg
Rmxvd1RocmVhZENvbnRyb2xsZXI6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShOb2Rl
KiBjb250ZW50Tm9kZSkKK3ZvaWQgRmxvd1RocmVhZENvbnRyb2xsZXI6OnVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250ZW50RWxlbWVudCkKIHsKLSAgICBBU1NF
UlQoY29udGVudE5vZGUgJiYgY29udGVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSk7Ci0gICAgSGFz
aE1hcDxjb25zdCBOb2RlKiwgUmVuZGVyTmFtZWRGbG93VGhyZWFkKj46Oml0ZXJhdG9yIGl0ID0g
bV9tYXBOYW1lZEZsb3dDb250ZW50Tm9kZXMuZmluZChjb250ZW50Tm9kZSk7Ci0gICAgQVNTRVJU
KGl0ICE9IG1fbWFwTmFtZWRGbG93Q29udGVudE5vZGVzLmVuZCgpKTsKKyAgICBhdXRvIGl0ID0g
bV9tYXBOYW1lZEZsb3dDb250ZW50RWxlbWVudC5maW5kKCZjb250ZW50RWxlbWVudCk7CisgICAg
QVNTRVJUKGl0ICE9IG1fbWFwTmFtZWRGbG93Q29udGVudEVsZW1lbnQuZW5kKCkpOwogICAgIEFT
U0VSVChpdC0+dmFsdWUpOwotICAgIEFTU0VSVChpdC0+dmFsdWUtPmhhc0NvbnRlbnROb2RlKGNv
bnRlbnROb2RlKSk7Ci0gICAgaXQtPnZhbHVlLT51bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5v
ZGUoY29udGVudE5vZGUpOwotICAgIG1fbWFwTmFtZWRGbG93Q29udGVudE5vZGVzLnJlbW92ZShj
b250ZW50Tm9kZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZS0+aGFzQ29udGVudEVsZW1lbnQoY29u
dGVudEVsZW1lbnQpKTsKKyAgICBpdC0+dmFsdWUtPnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudChjb250ZW50RWxlbWVudCk7CisgICAgbV9tYXBOYW1lZEZsb3dDb250ZW50RWxlbWVu
dC5yZW1vdmUoJmNvbnRlbnRFbGVtZW50KTsKIH0KIAogdm9pZCBGbG93VGhyZWFkQ29udHJvbGxl
cjo6dXBkYXRlRmxvd1RocmVhZHNDaGFpbklmTmVjZXNzYXJ5KCkKQEAgLTI3OCw5ICsyNzUsOSBA
QCB2b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjp1cGRhdGVSZW5kZXJGCiB9CiAjZW5kaWYKIAot
Ym9vbCBGbG93VGhyZWFkQ29udHJvbGxlcjo6aXNDb250ZW50Tm9kZVJlZ2lzdGVyZWRXaXRoQW55
TmFtZWRGbG93KGNvbnN0IE5vZGUqIGNvbnRlbnROb2RlKSBjb25zdAorYm9vbCBGbG93VGhyZWFk
Q29udHJvbGxlcjo6aXNDb250ZW50RWxlbWVudFJlZ2lzdGVyZWRXaXRoQW55TmFtZWRGbG93KGNv
bnN0IEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KSBjb25zdAogewotICAgIHJldHVybiBtX21hcE5h
bWVkRmxvd0NvbnRlbnROb2Rlcy5jb250YWlucyhjb250ZW50Tm9kZSk7CisgICAgcmV0dXJuIG1f
bWFwTmFtZWRGbG93Q29udGVudEVsZW1lbnQuY29udGFpbnMoJmNvbnRlbnRFbGVtZW50KTsKIH0K
IAogLy8gQ29sbGVjdCB0aGUgZml4ZWQgcG9zaXRpb25lZCBsYXllcnMgdGhhdCBoYXZlIHRoZSBu
YW1lZCBmbG93cyBhcyBjb250YWluaW5nIGJsb2NrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTU2MjQ3KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0UmVuZGVyTmFt
ZWRGbG93VGhyZWFkcygpOwogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoKTsKIAotICAgIHZvaWQg
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShOb2RlKiwgUmVuZGVyTmFtZWRGbG93VGhyZWFk
Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoTm9kZSopOwotICAg
IGJvb2wgaXNDb250ZW50Tm9kZVJlZ2lzdGVyZWRXaXRoQW55TmFtZWRGbG93KGNvbnN0IE5vZGUq
KSBjb25zdDsKKyAgICB2b2lkIHJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVu
dCYsIFJlbmRlck5hbWVkRmxvd1RocmVhZCYpOworICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmKTsKKyAgICBib29sIGlzQ29udGVudEVsZW1lbnRSZWdp
c3RlcmVkV2l0aEFueU5hbWVkRmxvdyhjb25zdCBFbGVtZW50JikgY29uc3Q7CiAKICAgICBib29s
IGhhc0Zsb3dUaHJlYWRzV2l0aEF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fZmxvd1RocmVhZHNXaXRoQXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zOyB9CiAgICAgdm9p
ZCBpbmNyZW1lbnRGbG93VGhyZWFkc1dpdGhBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMoKSB7ICsr
bV9mbG93VGhyZWFkc1dpdGhBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnM7IH0KQEAgLTEwMyw4ICsx
MDMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlbmRlck5hbWVkRmxvd1RocmVhZE9yZGVy
RGlydHk7CiAgICAgdW5zaWduZWQgbV9mbG93VGhyZWFkc1dpdGhBdXRvTG9naWNhbEhlaWdodFJl
Z2lvbnM7CiAgICAgT3duUHRyPFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q+IG1fcmVuZGVyTmFt
ZWRGbG93VGhyZWFkTGlzdDsKLSAgICAvLyBtYXBzIGEgY29udGVudCBub2RlIHRvIGl0cyByZW5k
ZXIgZmxvdyB0aHJlYWQuCi0gICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKj4gbV9tYXBOYW1lZEZsb3dDb250ZW50Tm9kZXM7CisgICAgSGFzaE1hcDxjb25zdCBF
bGVtZW50KiwgUmVuZGVyTmFtZWRGbG93VGhyZWFkKj4gbV9tYXBOYW1lZEZsb3dDb250ZW50RWxl
bWVudDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAxNTYyNDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQsNyArNjQsNyBAQCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6On5SZW5kZXJOYW1lZEZsb3dU
CiB7CiAgICAgLy8gVGhlIGZsb3cgdGhyZWFkIGNhbiBiZSBkZXN0cm95ZWQgd2l0aG91dCB1bnJl
Z2lzdGVyaW5nIHRoZSBjb250ZW50IG5vZGVzIGlmIHRoZSBkb2N1bWVudCBpcyBkZXN0cm95ZWQu
CiAgICAgLy8gVGhpcyBjYW4gbGVhZCB0byBwcm9ibGVtcyBiZWNhdXNlIHRoZSBub2RlcyBhcmUg
c3RpbGwgbWFya2VkIGFzIGJlbG9uZ2luZyB0byBhIGZsb3cgdGhyZWFkLgotICAgIGNsZWFyQ29u
dGVudE5vZGVzKCk7CisgICAgY2xlYXJDb250ZW50RWxlbWVudHMoKTsKIAogICAgIC8vIEFsc28g
bGVhdmUgdGhlIE5hbWVkRmxvdyBvYmplY3QgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGJ5IGNhbGxp
bmcgbWFyayBmb3IgZGVzdHJ1Y3Rpb24uCiAgICAgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CkBA
IC03NSwxOSArNzUsMTkgQEAgY29uc3QgY2hhciogUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW5k
ZQogICAgIHJldHVybiAiUmVuZGVyTmFtZWRGbG93VGhyZWFkIjsKIH0KICAgICAKLXZvaWQgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpjbGVhckNvbnRlbnROb2RlcygpCit2b2lkIFJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMoKQogewotICAgIGZvciAoTmFtZWRGbG93
Q29udGVudE5vZGVzOjppdGVyYXRvciBpdCA9IG1fY29udGVudE5vZGVzLmJlZ2luKCk7IGl0ICE9
IG1fY29udGVudE5vZGVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIE5vZGUqIGNvbnRlbnROb2Rl
ID0gKml0OworICAgIGZvciAoYXV0byBpdCA9IG1fY29udGVudEVsZW1lbnRzLmJlZ2luKCksIGVu
ZCA9IG1fY29udGVudEVsZW1lbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
RWxlbWVudCogY29udGVudEVsZW1lbnQgPSAqaXQ7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQo
Y29udGVudE5vZGUgJiYgY29udGVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSk7Ci0gICAgICAgIEFT
U0VSVChjb250ZW50Tm9kZS0+aW5OYW1lZEZsb3coKSk7Ci0gICAgICAgIEFTU0VSVCgmY29udGVu
dE5vZGUtPmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpOworICAgICAgICBBU1NFUlQoY29udGVu
dEVsZW1lbnQpOworICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQtPmluTmFtZWRGbG93KCkp
OworICAgICAgICBBU1NFUlQoJmNvbnRlbnRFbGVtZW50LT5kb2N1bWVudCgpID09ICZkb2N1bWVu
dCgpKTsKICAgICAgICAgCi0gICAgICAgIGNvbnRlbnROb2RlLT5jbGVhckluTmFtZWRGbG93KCk7
CisgICAgICAgIGNvbnRlbnRFbGVtZW50LT5jbGVhckluTmFtZWRGbG93KCk7CiAgICAgfQogICAg
IAotICAgIG1fY29udGVudE5vZGVzLmNsZWFyKCk7CisgICAgbV9jb250ZW50RWxlbWVudHMuY2xl
YXIoKTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdNb2Rl
KCkKQEAgLTQzOSw0MSArNDM5LDQ1IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpwdXNo
RGVwZW5kZW4KIC8vIFRoZSBjb250ZW50IG5vZGVzIGxpc3QgY29udGFpbnMgdGhvc2Ugbm9kZXMg
d2l0aCAtd2Via2l0LWZsb3ctaW50bzogZmxvdy4KIC8vIEFuIGVsZW1lbnQgd2l0aCBkaXNwbGF5
Om5vbmUgc2hvdWxkIGFsc28gYmUgbGlzdGVkIGFtb25nIHRob3NlIG5vZGVzLgogLy8gVGhlIGxp
c3Qgb2Ygbm9kZXMgaXMgb3JkZXJlZC4KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdp
c3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKE5vZGUqIGNvbnRlbnROb2RlKQordm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYg
Y29udGVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnROb2RlICYmIGNvbnRlbnROb2Rl
LT5pc0VsZW1lbnROb2RlKCkpOwotICAgIEFTU0VSVCgmY29udGVudE5vZGUtPmRvY3VtZW50KCkg
PT0gJmRvY3VtZW50KCkpOworICAgIEFTU0VSVCgmY29udGVudEVsZW1lbnQuZG9jdW1lbnQoKSA9
PSAmZG9jdW1lbnQoKSk7CiAKLSAgICBjb250ZW50Tm9kZS0+c2V0SW5OYW1lZEZsb3coKTsKKyAg
ICBjb250ZW50RWxlbWVudC5zZXRJbk5hbWVkRmxvdygpOwogCiAgICAgcmVzZXRNYXJrRm9yRGVz
dHJ1Y3Rpb24oKTsKIAogICAgIC8vIEZpbmQgdGhlIGZpcnN0IGNvbnRlbnQgbm9kZSBmb2xsb3dp
bmcgdGhlIG5ldyBjb250ZW50IG5vZGUuCi0gICAgZm9yIChOYW1lZEZsb3dDb250ZW50Tm9kZXM6
Oml0ZXJhdG9yIGl0ID0gbV9jb250ZW50Tm9kZXMuYmVnaW4oKTsgaXQgIT0gbV9jb250ZW50Tm9k
ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9ICppdDsKLSAgICAgICAgdW5z
aWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50Tm9kZS0+Y29tcGFyZURvY3VtZW50UG9zaXRp
b24obm9kZSk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb250ZW50RWxlbWVudHMuYmVnaW4oKSwg
ZW5kID0gbV9jb250ZW50RWxlbWVudHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gKml0OworICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlv
biA9IGNvbnRlbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOwogICAg
ICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpIHsK
LSAgICAgICAgICAgIG1fY29udGVudE5vZGVzLmluc2VydEJlZm9yZShub2RlLCBjb250ZW50Tm9k
ZSk7CisgICAgICAgICAgICBtX2NvbnRlbnRFbGVtZW50cy5pbnNlcnRCZWZvcmUoZWxlbWVudCwg
JmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICBtX2NvbnRlbnROb2Rlcy5hZGQoY29udGVudE5vZGUpOworCisgICAgbV9jb250ZW50RWxl
bWVudHMuYWRkKCZjb250ZW50RWxlbWVudCk7CiB9CiAKLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoTm9kZSogY29udGVudE5vZGUpCit2
b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KQogewotICAgIEFTU0VSVChjb250ZW50Tm9kZSAm
JiBjb250ZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlQobV9jb250ZW50Tm9k
ZXMuY29udGFpbnMoY29udGVudE5vZGUpKTsKLSAgICBBU1NFUlQoY29udGVudE5vZGUtPmluTmFt
ZWRGbG93KCkpOwotICAgIEFTU0VSVCgmY29udGVudE5vZGUtPmRvY3VtZW50KCkgPT0gJmRvY3Vt
ZW50KCkpOworICAgIEFTU0VSVChtX2NvbnRlbnRFbGVtZW50cy5jb250YWlucygmY29udGVudEVs
ZW1lbnQpKTsKKyAgICBBU1NFUlQoY29udGVudEVsZW1lbnQuaW5OYW1lZEZsb3coKSk7CisgICAg
QVNTRVJUKCZjb250ZW50RWxlbWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKIAotICAg
IGNvbnRlbnROb2RlLT5jbGVhckluTmFtZWRGbG93KCk7Ci0gICAgbV9jb250ZW50Tm9kZXMucmVt
b3ZlKGNvbnRlbnROb2RlKTsKKyAgICBjb250ZW50RWxlbWVudC5jbGVhckluTmFtZWRGbG93KCk7
CisgICAgbV9jb250ZW50RWxlbWVudHMucmVtb3ZlKCZjb250ZW50RWxlbWVudCk7CiAKICAgICBp
ZiAoY2FuQmVEZXN0cm95ZWQoKSkKICAgICAgICAgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CiB9
CiAKK2Jvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpoYXNDb250ZW50RWxlbWVudChFbGVtZW50
JiBjb250ZW50RWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50RWxlbWVudHMu
Y29udGFpbnMoJmNvbnRlbnRFbGVtZW50KTsKK30KKyAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbmFtZWRGbG93LT5uYW1lKCk7CkBAIC01NDksMTEgKzU1MywxMSBAQCBib29sIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JECiAgICAgcmV0dXJuIG1fbmFtZWRGbG93LT5m
bG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGw7CiB9CiAKLXN0YXRp
YyBib29sIGlzQ29udGFpbmVkSW5Ob2RlcyhWZWN0b3I8Tm9kZSo+IG90aGVycywgTm9kZSogbm9k
ZSkKK3N0YXRpYyBib29sIGlzQ29udGFpbmVkSW5FbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+IG90
aGVycywgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90
aGVycy5zaXplKCk7IGkrKykgewotICAgICAgICBOb2RlKiBvdGhlciA9IG90aGVycy5hdChpKTsK
LSAgICAgICAgaWYgKG90aGVyLT5jb250YWlucyhub2RlKSkKKyAgICAgICAgRWxlbWVudCogb3Ro
ZXIgPSBvdGhlcnMuYXQoaSk7CisgICAgICAgIGlmIChvdGhlci0+Y29udGFpbnMoZWxlbWVudCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTY5LDE2ICs1NzMsMTYgQEAgc3RhdGljIGJvb2wgYm94SW50ZXJzZWN0c1JlZ2lvbihMYXlvdXRV
bgogfQogCiAvLyBSZXRyaWV2ZSB0aGUgbmV4dCBub2RlIHRvIGJlIHZpc2l0ZWQgd2hpbGUgY29t
cHV0aW5nIHRoZSByYW5nZXMgaW5zaWRlIGEgcmVnaW9uLgotc3RhdGljIE5vZGUqIG5leHROb2Rl
SW5zaWRlQ29udGVudE5vZGUoY29uc3QgTm9kZSogY3Vyck5vZGUsIGNvbnN0IE5vZGUqIGNvbnRl
bnROb2RlKQorc3RhdGljIE5vZGUqIG5leHROb2RlSW5zaWRlQ29udGVudEVsZW1lbnQoY29uc3Qg
Tm9kZSogY3Vyck5vZGUsIGNvbnN0IEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50KQogewogICAgIEFT
U0VSVChjdXJyTm9kZSk7Ci0gICAgQVNTRVJUKGNvbnRlbnROb2RlICYmIGNvbnRlbnROb2RlLT5p
bk5hbWVkRmxvdygpKTsKKyAgICBBU1NFUlQoY29udGVudEVsZW1lbnQgJiYgY29udGVudEVsZW1l
bnQtPmluTmFtZWRGbG93KCkpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoY3Vyck5vZGUt
PnJlbmRlcmVyKCkgJiYgY3Vyck5vZGUtPnJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpKQotICAgICAg
ICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3Vyck5vZGUsIGNv
bnRlbnROb2RlKTsKKyAgICAgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0No
aWxkcmVuKGN1cnJOb2RlLCBjb250ZW50RWxlbWVudCk7CiAjZW5kaWYKLSAgICByZXR1cm4gTm9k
ZVRyYXZlcnNhbDo6bmV4dChjdXJyTm9kZSwgY29udGVudE5vZGUpOworICAgIHJldHVybiBOb2Rl
VHJhdmVyc2FsOjpuZXh0KGN1cnJOb2RlLCBjb250ZW50RWxlbWVudCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiYgcmFu
Z2VPYmplY3RzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKQEAgLTU5OCwyNyAr
NjAyLDI3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmUKICAgICBl
bHNlCiAgICAgICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gPSByZWdpb24tPmxvZ2ljYWxCb3R0
b21Gb3JGbG93VGhyZWFkQ29udGVudCgpOwogCi0gICAgVmVjdG9yPE5vZGUqPiBub2RlczsKLSAg
ICAvLyBlbGltaW5hdGUgdGhlIGNvbnRlbnROb2RlcyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiBv
dGhlciBjb250ZW50Tm9kZXMKLSAgICBmb3IgKE5hbWVkRmxvd0NvbnRlbnROb2Rlczo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjb250ZW50Tm9kZXMoKS5iZWdpbigpOyBpdCAhPSBjb250ZW50Tm9kZXMo
KS5lbmQoKTsgKytpdCkgewotICAgICAgICBOb2RlKiBub2RlID0gKml0OwotICAgICAgICBpZiAo
IWlzQ29udGFpbmVkSW5Ob2Rlcyhub2Rlcywgbm9kZSkpCi0gICAgICAgICAgICBub2Rlcy5hcHBl
bmQobm9kZSk7CisgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAgICAvLyBlbGltaW5h
dGUgdGhlIGNvbnRlbnRFbGVtZW50cyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiBvdGhlciBjb250
ZW50RWxlbWVudHMKKyAgICBmb3IgKGF1dG8gaXQgPSBjb250ZW50RWxlbWVudHMoKS5iZWdpbigp
LCBlbmQgPSBjb250ZW50RWxlbWVudHMoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAqaXQ7CisgICAgICAgIGlmICghaXNDb250YWluZWRJbkVs
ZW1lbnRzKGVsZW1lbnRzLCBlbGVtZW50KSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChl
bGVtZW50KTsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIE5vZGUqIGNvbnRlbnROb2RlID0gbm9kZXMuYXQoaSk7Ci0gICAg
ICAgIGlmICghY29udGVudE5vZGUtPnJlbmRlcmVyKCkpCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlbGVtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBFbGVtZW50KiBjb250ZW50RWxl
bWVudCA9IGVsZW1lbnRzLmF0KGkpOworICAgICAgICBpZiAoIWNvbnRlbnRFbGVtZW50LT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoJmNvbnRlbnROb2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoJmNvbnRlbnRFbGVtZW50LT5kb2N1
bWVudCgpKTsKICAgICAgICAgYm9vbCBmb3VuZFN0YXJ0UG9zaXRpb24gPSBmYWxzZTsKICAgICAg
ICAgYm9vbCBzdGFydHNBYm92ZVJlZ2lvbiA9IHRydWU7CiAgICAgICAgIGJvb2wgZW5kc0JlbG93
UmVnaW9uID0gdHJ1ZTsKICAgICAgICAgYm9vbCBza2lwT3Zlck91dHNpZGVOb2RlcyA9IGZhbHNl
OwogICAgICAgICBOb2RlKiBsYXN0RW5kTm9kZSA9IDA7CiAKLSAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gY29udGVudE5vZGU7IG5vZGU7IG5vZGUgPSBuZXh0Tm9kZUluc2lkZUNvbnRlbnROb2Rl
KG5vZGUsIGNvbnRlbnROb2RlKSkgeworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZW50
RWxlbWVudDsgbm9kZTsgbm9kZSA9IG5leHROb2RlSW5zaWRlQ29udGVudEVsZW1lbnQobm9kZSwg
Y29udGVudEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CkBAIC02NTIsNyArNjU2LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmdldFJhbmdlcyhWZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLT5p
bnRlcnNlY3RzTm9kZShub2RlLCBJR05PUkVfRVhDRVBUSU9OKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kQmVmb3JlKG5vZGUsIElHTk9SRV9FWENFUFRJT04pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VPYmplY3RzLmFwcGVuZChyYW5nZS0+Y2xvbmVS
YW5nZShJR05PUkVfRVhDRVBUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoJmNvbnRlbnROb2RlLT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgmY29udGVudEVsZW1lbnQtPmRvY3VtZW50
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRzQWJvdmVSZWdpb24gPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBP
dmVyT3V0c2lkZU5vZGVzID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgJKHJldmlzaW9uIDE1NjI0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiAKIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVuZGVyTmFtZWRGbG93VGhyZWFkKj4gUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlz
dDsKIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8UmVuZGVyTmFtZWRGbG93VGhyZWFkKj4gUmVuZGVy
TmFtZWRGbG93VGhyZWFkQ291bnRlZFNldDsKLXR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSo+IE5h
bWVkRmxvd0NvbnRlbnROb2RlczsKK3R5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50czsKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkIEZJTkFM
IDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDExIEBA
IHB1YmxpYzoKICAgICBib29sIG92ZXJzZXQoKSBjb25zdCB7IHJldHVybiBtX292ZXJzZXQ7IH0K
ICAgICB2b2lkIGNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKExheW91dFVuaXQgb2xkQ2xp
ZW50QWZ0ZXJFZGdlKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShO
b2RlKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoTm9kZSopOwot
ICAgIGNvbnN0IE5hbWVkRmxvd0NvbnRlbnROb2RlcyYgY29udGVudE5vZGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50Tm9kZXM7IH0KLSAgICBib29sIGhhc0NvbnRlbnROb2RlKE5vZGUqIGNv
bnRlbnROb2RlKSBjb25zdCB7IEFTU0VSVChjb250ZW50Tm9kZSk7IHJldHVybiBtX2NvbnRlbnRO
b2Rlcy5jb250YWlucyhjb250ZW50Tm9kZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoRWxlbWVudCYpOworICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50KEVsZW1lbnQmKTsKKyAgICBjb25zdCBOYW1lZEZsb3dDb250ZW50RWxlbWVu
dHMmIGNvbnRlbnRFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEVsZW1lbnRzOyB9
CisgICAgYm9vbCBoYXNDb250ZW50RWxlbWVudChFbGVtZW50JikgY29uc3Q7CisKICAgICBib29s
IGlzTWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAgICB2b2lkIGdldFJhbmdlcyhWZWN0
b3I8UmVmUHRyPFJhbmdlPiA+JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKQEAgLTEw
MiwxMCArMTAzLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNoZWNrSW52YWxpZFJlZ2lvbnMo
KTsKIAotICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX2ludmFsaWRS
ZWdpb25MaXN0LmlzRW1wdHkoKSAmJiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1fY29udGVu
dE5vZGVzLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ludmFsaWRSZWdpb25MaXN0LmlzRW1wdHkoKSAmJiBtX3JlZ2lvbkxpc3QuaXNFbXB0
eSgpICYmIG1fY29udGVudEVsZW1lbnRzLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgcmVnaW9uTGF5
b3V0VXBkYXRlRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlck5hbWVkRmxvd1RocmVhZD4qKTsK
ICAgICB2b2lkIHJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQoVGltZXI8UmVuZGVy
TmFtZWRGbG93VGhyZWFkPiopOwotICAgIHZvaWQgY2xlYXJDb250ZW50Tm9kZXMoKTsKKyAgICB2
b2lkIGNsZWFyQ29udGVudEVsZW1lbnRzKCk7CiAgICAgdm9pZCB1cGRhdGVXcml0aW5nTW9kZSgp
OwogCiBwcml2YXRlOgpAQCAtMTIzLDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZW5kZXJPYmplY3QqPiBGbG93VGhyZWFkQ2hpbGRMaXN0OwogICAgIEZsb3dU
aHJlYWRDaGlsZExpc3QgbV9mbG93VGhyZWFkQ2hpbGRMaXN0OwogCi0gICAgTmFtZWRGbG93Q29u
dGVudE5vZGVzIG1fY29udGVudE5vZGVzOworICAgIE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50cyBt
X2NvbnRlbnRFbGVtZW50czsKIAogICAgIFJlbmRlclJlZ2lvbkxpc3QgbV9pbnZhbGlkUmVnaW9u
TGlzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJ
KHJldmlzaW9uIDE1NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODksMTUgKzQ4OSwxNSBAQCB2b2lkIFJlbmRlclJl
Z2lvbjo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvCiAgICAgLy8gU3RhcnQgZnJvbSBjb250ZW50IG5v
ZGVzIGFuZCByZWN1cnNpdmVseSBjb21wdXRlIHRoZSBzdHlsZSBpbiByZWdpb24gZm9yIHRoZSBy
ZW5kZXIgb2JqZWN0cyBiZWxvdy4KICAgICAvLyBJZiB0aGUgc3R5bGUgaW4gcmVnaW9uIHdhcyBh
bHJlYWR5IGNvbXB1dGVkLCB1c2VkIHRoYXQgc3R5bGUgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBu
ZXcgb25lLgogICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93ID0gdmll
dygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KHN0eWxlKCktPnJlZ2lvblRocmVhZCgpKTsKLSAgICBjb25zdCBOYW1lZEZsb3dDb250ZW50Tm9k
ZXMmIGNvbnRlbnROb2RlcyA9IG5hbWVkRmxvdy5jb250ZW50Tm9kZXMoKTsKKyAgICBjb25zdCBO
YW1lZEZsb3dDb250ZW50RWxlbWVudHMmIGNvbnRlbnRFbGVtZW50cyA9IG5hbWVkRmxvdy5jb250
ZW50RWxlbWVudHMoKTsKIAotICAgIGZvciAoTmFtZWRGbG93Q29udGVudE5vZGVzOjpjb25zdF9p
dGVyYXRvciBpdGVyID0gY29udGVudE5vZGVzLmJlZ2luKCksIGVuZCA9IGNvbnRlbnROb2Rlcy5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBjb25zdCBOb2RlKiBub2RlID0g
Kml0ZXI7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBjb250ZW50RWxlbWVudHMuYmVnaW4oKSwgZW5k
ID0gY29udGVudEVsZW1lbnRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAg
IGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSAqaXRlcjsKICAgICAgICAgLy8gVGhlIGxpc3Qgb2Yg
Y29udGVudCBub2RlcyBjb250YWlucyBhbHNvIHRoZSBub2RlcyB3aXRoIGRpc3BsYXk6bm9uZS4K
LSAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAoIWVsZW1lbnQtPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0
ID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgbm9kZSBk
b2VzIG5vdCBmbG93IGFueSBvZiBpdHMgY2hpbGRyZW4gaW4gdGhpcyByZWdpb24sCiAgICAgICAg
IC8vIHdlIGRvIG5vdCBjb21wdXRlIGFueSBzdHlsZSBmb3IgdGhlbSBpbiB0aGlzIHJlZ2lvbi4K
ICAgICAgICAgaWYgKCFmbG93VGhyZWFkKCktPm9iamVjdEluRmxvd1JlZ2lvbihvYmplY3QsIHRo
aXMpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAJKHJl
dmlzaW9uIDE1NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogbW92ZVRvRmxvdwogICAgICAgICByZXR1cm4gMDsKICAgICBGbG93VGhyZWFk
Q29udHJvbGxlciYgZmxvd1RocmVhZENvbnRyb2xsZXIgPSBlbGVtZW50LmRvY3VtZW50KCkucmVu
ZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpOwogICAgIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCYgcGFyZW50Rmxvd1JlbmRlcmVyID0gZmxvd1RocmVhZENvbnRyb2xsZXIuZW5zdXJlUmVu
ZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dUaHJlYWQoKSk7Ci0gICAgZmxvd1RocmVh
ZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZSgmZWxlbWVudCwgJnBhcmVu
dEZsb3dSZW5kZXJlcik7CisgICAgZmxvd1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChlbGVtZW50LCBwYXJlbnRGbG93UmVuZGVyZXIpOwogICAgIHJldHVy
biAmcGFyZW50Rmxvd1JlbmRlcmVyOwogfQogI2VuZGlmCg==
</data>
<flag name="review"
          id="234498"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>