<?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>177677</bug_id>
          
          <creation_ts>2017-09-29 12:29:02 -0700</creation_ts>
          <short_desc>SelectionRangeData should not hold raw RenderObject pointers</short_desc>
          <delta_ts>2017-10-02 13:06: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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354642</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-09-29 12:29:02 -0700</bug_when>
    <thetext>ssia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355129</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-01 22:03:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/34763060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355239</commentid>
    <comment_count>2</comment_count>
      <attachid>322378</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-10-02 08:45:27 -0700</bug_when>
    <thetext>Created attachment 322378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355245</commentid>
    <comment_count>3</comment_count>
      <attachid>322380</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-10-02 09:17:01 -0700</bug_when>
    <thetext>Created attachment 322380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355282</commentid>
    <comment_count>4</comment_count>
      <attachid>322380</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-02 10:22:04 -0700</bug_when>
    <thetext>Comment on attachment 322380
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Not testable.

I think adding why its not testable would be helpful.

Also an explanation of the change and the reason behind it would be great.

&gt; Source/WebCore/rendering/SelectionRangeData.h:80
&gt; +    RenderObject* start() const { return m_selectionContext.start(); }
&gt; +    RenderObject* end() const { return m_selectionContext.end(); }

Do the callers of these functions always null check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355350</commentid>
    <comment_count>5</comment_count>
      <attachid>322400</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-10-02 11:28:44 -0700</bug_when>
    <thetext>Created attachment 322400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355410</commentid>
    <comment_count>6</comment_count>
      <attachid>322400</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-02 12:44:57 -0700</bug_when>
    <thetext>Comment on attachment 322400
Patch

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

&gt; Source/WebCore/rendering/SelectionRangeData.h:51
&gt; +            : m_start(start ? makeWeakPtr(*start) : nullptr)

Might be useful to add a makeWeakPtr variant that takes a pointer and deals with nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355425</commentid>
    <comment_count>7</comment_count>
      <attachid>322400</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 13:06:10 -0700</bug_when>
    <thetext>Comment on attachment 322400
Patch

Clearing flags on attachment: 322400

Committed r222738: &lt;http://trac.webkit.org/changeset/222738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355426</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 13:06:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322378</attachid>
            <date>2017-10-02 08:45:27 -0700</date>
            <delta_ts>2017-10-02 09:16:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177677-20171002084527.patch</filename>
            <type>text/plain</type>
            <size>15247</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZiMTQyZWM2MjFlNTdh
NzRiMDNmNzczNzBlNjNjZDY3OGMxMDg3OS4uMDI0MGZhNTcyM2ZmOTZmMGE3NjhkNjg4NDNmZjg0
ZjQyOWZmZjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE3LTEwLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2VsZWN0aW9uUmFuZ2VEYXRh
IHNob3VsZCBub3QgaG9sZCByYXcgUmVuZGVyT2JqZWN0IHBvaW50ZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2NzcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM0NzYzMDYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdCB0ZXN0YWJsZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVh
cmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkUmVuZGVyZXJGb3JT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25S
YW5nZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6
cmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmNv
bGxlY3RCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRh
OjphcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dDo6c3RhcnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjplbmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpzdGFy
dFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6
Q29udGV4dDo6ZW5kUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjpDb250ZXh0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvblJhbmdlRGF0YTo6c3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uUmFuZ2VEYXRhOjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjpzdGFydFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvblJhbmdlRGF0YTo6ZW5kUG9zaXRpb24gY29uc3QpOgorCisyMDE3LTEwLTAxICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgUmVuZGVyVmlldyBkb2VzIG5vdCBu
ZWVkIHRvIGJlIGEgU2VsZWN0aW9uU3VidHJlZVJvb3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzcxMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDRhZGMwYThhNWVkMTEwZmJkMmQzYjdjMDdlMTQzOTdj
M2E1MzAyMTMuLmMwMzYzZGM0YTZmMTVhMGU3N2VkZjEzYTZmYTA1NmYxNTVkNjg3NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMTE0LDcgKzIxMTQs
NyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJl
cigpOwogICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNldCA+PSAw
KTsKLSAgICAgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVu
ZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgfSk7CisgICAgICAgIHZpZXctPnNlbGVjdGlv
bigpLnNldCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmluZGV4IDIxMWM5NjU1
OWYxNWE5MTg5OWI3ZTQxNTFmNGVmMWFmNzJjNzEyM2IuLmU3OTdjYzkyYTQzNDAxZWY1MWEyODdh
MzhlMDkzNDU5MDI4YTYyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApA
QCAtMTg1LDcgKzE4NSw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShG
cmFtZSYgZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrCiAgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBpbnQgZW5kT2Zm
c2V0ID0gZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgQVNTRVJUKHN0YXJ0T2Zm
c2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOwotICAgIHZpZXctPnNlbGVjdGlvbigpLnNldCh7
IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IH0sIFNl
bGVjdGlvblJhbmdlRGF0YTo6UmVwYWludE1vZGU6Ok5vdGhpbmcpOworICAgIHZpZXctPnNlbGVj
dGlvbigpLnNldCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9LCBT
ZWxlY3Rpb25SYW5nZURhdGE6OlJlcGFpbnRNb2RlOjpOb3RoaW5nKTsKICAgICAvLyBXZSBjYXB0
dXJlIHVzaW5nIHNuYXBzaG90RnJhbWVSZWN0KCkgYmVjYXVzZSB3ZSBmYWtlIHVwIHRoZSBzZWxl
Y3Rpb24gdXNpbmcKICAgICAvLyBGcmFtZVZpZXcgYnV0IHNuYXBzaG90U2VsZWN0aW9uKCkgdXNl
cyB0aGUgc2VsZWN0aW9uIGZyb20gdGhlIEZyYW1lIGl0c2VsZi4KICAgICByZXR1cm4gY3JlYXRl
RHJhZ0ltYWdlRnJvbVNuYXBzaG90KHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxl
Y3Rpb24oKS5ib3VuZHNDbGlwcGVkVG9WaXNpYmxlQ29udGVudCgpLCBvcHRpb25zKSwgbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3Bw
CmluZGV4IGZjYzY5NzlkYjZjMzUwMGE1Y2VjZDkwMjQzODA3NTJjNTBiYzY0OGMuLmEzOGFkY2Q4
YzljZDBiZDA1OTlhZGJmYWZjNGJjNDZkOGVkMGQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgc3Rh
dGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIHVuc2lnbmUKIAogc3RhdGljIGJvb2wgaXNWYWxpZFJlbmRlcmVyRm9yU2Vs
ZWN0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFNlbGVjdGlvblJhbmdl
RGF0YTo6Q29udGV4dCYgc2VsZWN0aW9uKQogewotICAgIHJldHVybiAocmVuZGVyZXIuY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgfHwgJnJlbmRlcmVyID09IHNlbGVjdGlvbi5zdGFydCB8fCAmcmVuZGVy
ZXIgPT0gc2VsZWN0aW9uLmVuZCkKKyAgICByZXR1cm4gKHJlbmRlcmVyLmNhbkJlU2VsZWN0aW9u
TGVhZigpIHx8ICZyZW5kZXJlciA9PSBzZWxlY3Rpb24uc3RhcnQoKSB8fCAmcmVuZGVyZXIgPT0g
c2VsZWN0aW9uLmVuZCgpKQogICAgICAgICAmJiByZW5kZXJlci5zZWxlY3Rpb25TdGF0ZSgpICE9
IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZQogICAgICAgICAmJiByZW5kZXJlci5jb250YWlu
aW5nQmxvY2soKTsKIH0KQEAgLTExNSwxNCArMTE1LDE0IEBAIHN0YXRpYyBSZW5kZXJCbG9jayog
Y29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAK
IHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpD
b250ZXh0JiBzZWxlY3Rpb24sIGJvb2wgcmVwYWludERpZmZlcmVuY2UpCiB7Ci0gICAgU2VsZWN0
aW9uRGF0YSBvbGRTZWxlY3Rpb25EYXRhIHsgc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24sIHNlbGVj
dGlvbi5lbmRQb3NpdGlvbiwgeyB9LCB7IH0gfTsKKyAgICBTZWxlY3Rpb25EYXRhIG9sZFNlbGVj
dGlvbkRhdGEgeyBzZWxlY3Rpb24uc3RhcnRQb3NpdGlvbigpLCBzZWxlY3Rpb24uZW5kUG9zaXRp
b24oKSwgeyB9LCB7IH0gfTsKICAgICAvLyBCbG9ja3MgY29udGFpbiBzZWxlY3RlZCBvYmplY3Rz
IGFuZCBmaWxsIGdhcHMgYmV0d2VlbiB0aGVtLCBlaXRoZXIgb24gdGhlIGxlZnQsIHJpZ2h0LCBv
ciBpbiBiZXR3ZWVuIGxpbmVzIGFuZCBibG9ja3MuCiAgICAgLy8gSW4gb3JkZXIgdG8gZ2V0IHRo
ZSByZXBhaW50IHJlY3QgcmlnaHQsIHdlIGhhdmUgdG8gZXhhbWluZSBsZWZ0LCBtaWRkbGUsIGFu
ZCByaWdodCByZWN0cyBpbmRpdmlkdWFsbHksIHNpbmNlIG90aGVyd2lzZQogICAgIC8vIHRoZSB1
bmlvbiBvZiB0aG9zZSByZWN0cyBtaWdodCByZW1haW4gdGhlIHNhbWUgZXZlbiB3aGVuIGNoYW5n
ZXMgaGF2ZSBvY2N1cnJlZC4KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0ID0gc2VsZWN0aW9uLnN0
YXJ0OworICAgIGF1dG8qIHN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdG9wID0gbnVsbHB0cjsKLSAgICBpZiAoc2VsZWN0aW9uLmVuZCkKLSAgICAgICAgc3Rv
cCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9uLmVuZCwgc2VsZWN0aW9uLmVuZFBv
c2l0aW9uLnZhbHVlKCkpOworICAgIGlmIChzZWxlY3Rpb24uZW5kKCkpCisgICAgICAgIHN0b3Ag
PSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnNlbGVjdGlvbi5lbmQoKSwgc2VsZWN0aW9uLmVuZFBv
c2l0aW9uKCkudmFsdWUoKSk7CiAgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0
b3Ioc3RhcnQpOwogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAg
IGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CkBA
IC0xNTQsNyArMTU0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBDb250
ZXh0JiBzZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE0KIHsKICAgICAvLyBNYWtl
IHN1cmUgYm90aCBvdXIgc3RhcnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVkLgogICAgIC8v
IENoZWNrIHd3dy5tc25iYy5jb20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8gZmluZCB0aGUg
Y2FzZSB3aGVyZSB0aGlzIGhhcHBlbmVkLgotICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0ICYmICFz
ZWxlY3Rpb24uZW5kKSB8fCAoc2VsZWN0aW9uLmVuZCAmJiAhc2VsZWN0aW9uLnN0YXJ0KSkKKyAg
ICBpZiAoKHNlbGVjdGlvbi5zdGFydCgpICYmICFzZWxlY3Rpb24uZW5kKCkpIHx8IChzZWxlY3Rp
b24uZW5kKCkgJiYgIXNlbGVjdGlvbi5zdGFydCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8v
IEp1c3QgcmV0dXJuIGlmIHRoZSBzZWxlY3Rpb24gaGFzbid0IGNoYW5nZWQuCiAgICAgYXV0byBp
c0NhcmV0ID0gbV9yZW5kZXJWaWV3LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNDYXJldCgpOwpAQCAt
MTcyLDE4ICsxNzIsMTggQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBDb250
ZXh0JiBzZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE0KIHZvaWQgU2VsZWN0aW9u
UmFuZ2VEYXRhOjpjbGVhcigpCiB7CiAgICAgbV9yZW5kZXJWaWV3LmxheWVyKCktPnJlcGFpbnRC
bG9ja1NlbGVjdGlvbkdhcHMoKTsKLSAgICBzZXQoe251bGxwdHIsIG51bGxwdHIsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0fSwgU2VsZWN0aW9uUmFuZ2VEYXRhOjpSZXBhaW50TW9kZTo6TmV3
TWludXNPbGQpOworICAgIHNldCh7IH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWludE1vZGU6
Ok5ld01pbnVzT2xkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnJlcGFpbnQoKSBj
b25zdAogewogICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPiBwcm9jZXNzZWRCbG9ja3M7CiAgICAg
UmVuZGVyT2JqZWN0KiBlbmQgPSBudWxscHRyOwotICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQu
ZW5kKQotICAgICAgICBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKm1fc2VsZWN0aW9uQ29u
dGV4dC5lbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52YWx1ZSgpKTsKLSAgICBT
ZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQpOworICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIGVuZCA9IHJl
bmRlcmVyQWZ0ZXJQb3NpdGlvbigqbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpLCBtX3NlbGVjdGlv
bkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKKyAgICBTZWxlY3Rpb25JdGVyYXRvciBz
ZWxlY3Rpb25JdGVyYXRvcihtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSk7CiAgICAgZm9yIChh
dXRvKiByZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLmN1cnJlbnQoKTsgcmVuZGVyZXIgJiYg
cmVuZGVyZXIgIT0gZW5kOyByZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewot
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSAmJiByZW5kZXJlciAh
PSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgJiYgcmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25Db250
ZXh0LmVuZCkKKyAgICAgICAgaWYgKCFyZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYg
cmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgJiYgcmVuZGVyZXIgIT0gbV9z
ZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChyZW5kZXJlci0+c2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5v
bmUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIwMCwxMyArMjAwLDEzIEBAIHZvaWQgU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjpyZXBhaW50KCkgY29uc3QKIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VE
YXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250
ZW50KSBjb25zdAogewogICAgIFNlbGVjdGlvbkRhdGE6OlJlbmRlcmVyTWFwIHJlbmRlcmVyczsK
LSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0OworICAg
IGF1dG8qIHN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCk7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdG9wID0gbnVsbHB0cjsKLSAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LmVuZCkKLSAg
ICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqbV9zZWxlY3Rpb25Db250ZXh0LmVu
ZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uLnZhbHVlKCkpOworICAgIGlmIChtX3Nl
bGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRp
b24oKm1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0
aW9uKCkudmFsdWUoKSk7CiAgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Io
c3RhcnQpOwogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7Ci0gICAgICAgIGlm
ICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29u
dGV4dC5zdGFydCB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKQorICAgICAgICBp
ZiAoKHN0YXJ0LT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNv
bnRleHQuc3RhcnQoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCiAgICAg
ICAgICAgICAmJiBzdGFydC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbk5vbmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBh
aW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBh
cyB3ZWxsLgogICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENs
aXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKQEAgLTI0MywyNCArMjQzLDI0IEBAIHZvaWQgU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFp
bnRNb2RlIGJsb2NrUmVwCiAgICAgZm9yIChhdXRvKiByZW5kZXJlciA6IG9sZFNlbGVjdGlvbkRh
dGEucmVuZGVyZXJzLmtleXMoKSkKICAgICAgICAgcmVuZGVyZXItPnNldFNlbGVjdGlvblN0YXRl
SWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKICAgICBtX3NlbGVjdGlvbkNv
bnRleHQgPSBuZXdTZWxlY3Rpb247CisgICAgYXV0byogc2VsZWN0aW9uU3RhcnQgPSBtX3NlbGVj
dGlvbkNvbnRleHQuc3RhcnQoKTsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMg
b2YgYWxsIG9iamVjdHMgYmV0d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0g
ICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCAmJiBtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCkKLSAgICAgICAgbV9zZWxlY3Rpb25Db250ZXh0
LnN0YXJ0LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
Qm90aCk7CisgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICYmIHNlbGVjdGlvblN0YXJ0ID09IG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNlbGVjdGlv
blN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCkKLSAgICAgICAgICAgIG1fc2Vs
ZWN0aW9uQ29udGV4dC5zdGFydC0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvblN0YXJ0KTsKLSAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5lbmQp
Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbkNvbnRleHQuZW5kLT5zZXRTZWxlY3Rpb25TdGF0ZUlm
TmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKTsKKyAgICAgICAgaWYgKHNlbGVjdGlv
blN0YXJ0KQorICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNlbGVjdGlvblN0YXRlSWZO
ZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCk7CisgICAgICAgIGlmIChhdXRvKiBl
bmQgPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgICAgICBlbmQtPnNldFNlbGVj
dGlvblN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpOwogICAgIH0KIAot
ICAgIGF1dG8qIHNlbGVjdGlvblN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0OwotICAg
IGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kOwogICAgIFJl
bmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKKyAgICBhdXRvKiBzZWxlY3Rpb25E
YXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOwogICAgIGlmIChzZWxlY3Rpb25EYXRh
RW5kKQotICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKnNlbGVj
dGlvbkRhdGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52YWx1ZSgpKTsKKyAg
ICAgICAgc2VsZWN0aW9uRW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKCpzZWxlY3Rpb25EYXRh
RW5kLCBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKICAgICBTZWxl
Y3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9y
IChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRlcmVy
ICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNl
bGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09
IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rp
b25Db250ZXh0LmVuZCkKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBzZWxlY3Rpb25T
dGFydCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzA4LDggKzMwOCw4IEBA
IHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rp
b24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgIGF1dG8qIG5ld0luZm8gPSBuZXdTZWxl
Y3RlZFJlbmRlcmVycy5nZXQocmVuZGVyZXIpOwogICAgICAgICBhdXRvKiBvbGRJbmZvID0gc2Vs
ZWN0ZWRSZW5kZXJlckluZm8udmFsdWUuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW5mbyB8fCBv
bGRJbmZvLT5yZWN0KCkgIT0gbmV3SW5mby0+cmVjdCgpIHx8IG9sZEluZm8tPnN0YXRlKCkgIT0g
bmV3SW5mby0+c3RhdGUoKQotICAgICAgICAgICAgfHwgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFy
dCA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLnN0YXJ0UG9zaXRpb24gIT0gbV9zZWxl
Y3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICB8fCAobV9zZWxlY3Rpb25D
b250ZXh0LmVuZCA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLmVuZFBvc2l0aW9uICE9
IG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbikpIHsKKyAgICAgICAgICAgIHx8IChtX3Nl
bGVjdGlvbkNvbnRleHQuc3RhcnQoKSA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLnN0
YXJ0UG9zaXRpb24gIT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24oKSkKKyAgICAg
ICAgICAgIHx8IChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgPT0gcmVuZGVyZXIgJiYgb2xkU2Vs
ZWN0aW9uRGF0YS5lbmRQb3NpdGlvbiAhPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24o
KSkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChu
ZXdJbmZvKSB7CiAgICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IGY0ZmYzZGI0Y2E1
MzI2OWQ1ZTU0NTcyMTBlZjA3NWM1ZGJmZjZhYWEuLmQ3YzRjMTJkYmRkY2QwY2YyNDEzMGQ0Mzhm
YmFhMmM5ZjgxODRhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxl
Y3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9u
UmFuZ2VEYXRhLmgKQEAgLTQ0LDI2ICs0NCw0MiBAQCBjbGFzcyBTZWxlY3Rpb25SYW5nZURhdGEg
ewogcHVibGljOgogICAgIFNlbGVjdGlvblJhbmdlRGF0YShSZW5kZXJWaWV3Jik7CiAgICAgCi0g
ICAgc3RydWN0IENvbnRleHQgewotICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0IHsgbnVsbHB0
ciB9OwotICAgICAgICBSZW5kZXJPYmplY3QqIGVuZCB7IG51bGxwdHIgfTsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3NpdGlvbjsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gZW5kUG9zaXRpb247CisgICAgY2xhc3MgQ29udGV4dCB7CisgICAgcHVibGlj
OgorICAgICAgICBDb250ZXh0KCkgPSBkZWZhdWx0OworICAgICAgICBDb250ZXh0KFJlbmRlck9i
amVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogZW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0ID8gbWFrZVdlYWtQ
dHIoKnN0YXJ0KSA6IG51bGxwdHIpCisgICAgICAgICAgICAsIG1fZW5kKGVuZCA/IG1ha2VXZWFr
UHRyKCplbmQpIDogbnVsbHB0cikKKyAgICAgICAgICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0
T2Zmc2V0KQorICAgICAgICAgICAgLCBtX2VuZFBvc2l0aW9uKGVuZE9mZnNldCkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnQuZ2V0KCk7IH0KKyAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmQoKSBjb25zdCB7
IHJldHVybiBtX2VuZC5nZXQoKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBz
dGFydFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFBvc2l0aW9uOyB9CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9l
bmRQb3NpdGlvbjsgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb250ZXh0JiBv
dGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ID09IG90aGVy
LnN0YXJ0ICYmIGVuZCA9PSBvdGhlci5lbmQgJiYgc3RhcnRQb3NpdGlvbiA9PSBvdGhlci5zdGFy
dFBvc2l0aW9uICYmIGVuZFBvc2l0aW9uID09IG90aGVyLmVuZFBvc2l0aW9uOworICAgICAgICAg
ICAgcmV0dXJuIG1fc3RhcnQgPT0gb3RoZXIubV9zdGFydCAmJiBtX2VuZCA9PSBvdGhlci5tX2Vu
ZCAmJiBtX3N0YXJ0UG9zaXRpb24gPT0gb3RoZXIubV9zdGFydFBvc2l0aW9uICYmIG1fZW5kUG9z
aXRpb24gPT0gb3RoZXIubV9lbmRQb3NpdGlvbjsKICAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IG1fc3RhcnQ7CisgICAgICAgIFdlYWtQdHI8
UmVuZGVyT2JqZWN0PiBtX2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9z
dGFydFBvc2l0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2VuZFBvc2l0
aW9uOwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIFJlcGFpbnRNb2RlIHsgTmV3WE9ST2xkLCBO
ZXdNaW51c09sZCwgTm90aGluZyB9OwogICAgIHZvaWQgc2V0KGNvbnN0IENvbnRleHQmLCBSZXBh
aW50TW9kZSA9IFJlcGFpbnRNb2RlOjpOZXdYT1JPbGQpOwogICAgIGNvbnN0IENvbnRleHQmIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dDsgfQogCi0gICAgUmVuZGVyT2Jq
ZWN0KiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydDsgfQot
ICAgIFJlbmRlck9iamVjdCogZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0
LmVuZDsgfQotICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChtX3Nl
bGVjdGlvbkNvbnRleHQuc3RhcnRQb3NpdGlvbik7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQu
c3RhcnRQb3NpdGlvbi52YWx1ZSgpOyB9Ci0gICAgdW5zaWduZWQgZW5kUG9zaXRpb24oKSBjb25z
dCB7IEFTU0VSVChtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24pOyByZXR1cm4gbV9zZWxl
Y3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uLnZhbHVlKCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIHN0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCk7IH0KKyAgICBS
ZW5kZXJPYmplY3QqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5lbmQo
KTsgfQorICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChtX3NlbGVj
dGlvbkNvbnRleHQuc3RhcnRQb3NpdGlvbigpKTsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5z
dGFydFBvc2l0aW9uKCkudmFsdWUoKTsgfQorICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uKCkgY29u
c3QgeyBBU1NFUlQobV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkpOyByZXR1cm4gbV9z
ZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKTsgfQogCiAgICAgdm9pZCBjbGVh
cigpOwogICAgIEludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gY29sbGVjdEJvdW5kcyhD
bGlwVG9WaXNpYmxlQ29udGVudDo6Tm8pOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322380</attachid>
            <date>2017-10-02 09:17:01 -0700</date>
            <delta_ts>2017-10-02 11:28:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177677-20171002091700.patch</filename>
            <type>text/plain</type>
            <size>15522</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRlMTY5OWFhNDZlMzQ1
NzAzMTM0Mjk5MjY5YWM1YzU0MThhNDU2ZC4uZDM2MjMyNDdiNDk2YWM2OGQ3YTY0N2E4NTc0ZDc2
MWMzMmNkMDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTEwLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VsZWN0aW9uUmFuZ2VEYXRh
IHNob3VsZCBub3QgaG9sZCByYXcgUmVuZGVyT2JqZWN0IHBvaW50ZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2NzcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM0NzYzMDYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdCB0ZXN0YWJsZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVh
cmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkUmVuZGVyZXJGb3JT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SYW5nZURhdGE6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25S
YW5nZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6
cmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmNv
bGxlY3RCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRh
OjphcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dDo6c3RhcnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjplbmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpzdGFy
dFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6
Q29udGV4dDo6ZW5kUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjpDb250ZXh0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvblJhbmdlRGF0YTo6c3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uUmFuZ2VEYXRhOjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjpzdGFydFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvblJhbmdlRGF0YTo6ZW5kUG9zaXRpb24gY29uc3QpOgorCiAyMDE3LTEwLTAyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWVtb3J5IGxlYWtzIGlu
IFJlbmRlck11bHRpQ29sdW1uRmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAppbmRleCA3NDcwNzc5Yzc1ZWZhOTJiZjRmMjc5ZjU4NmJmZjViN2Y0OTI3YmI1Li5j
MDM2M2RjNGE2ZjE1YTBlNzdlZGYxM2E2ZmEwNTZmMTU1ZDY4NzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjExNCw3ICsyMTE0LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgICAgIFJlbmRlck9iamVjdCog
ZW5kUmVuZGVyZXIgPSBlbmRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAg
ICAgaW50IGVuZE9mZnNldCA9IGVuZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAg
ICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7Ci0gICAgICAg
IHZpZXctPnNlbGVjdGlvbigpLnNldChTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQoc3RhcnRS
ZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpKTsKKyAgICAgICAg
dmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRP
ZmZzZXQpIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAK
aW5kZXggMTU1OTMxMTRjNzVmZDVmYWM5OWNkOWIxMGM4ODY0MTM3MzQ0NGZhOC4uZTc5N2NjOTJh
NDM0MDFlZjUxYTI4N2EzOGUwOTM0NTkwMjhhNjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2sK
ICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwog
ICAgIGludCBlbmRPZmZzZXQgPSBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBB
U1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7Ci0gICAgdmlldy0+c2Vs
ZWN0aW9uKCkuc2V0KFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dChzdGFydFJlbmRlcmVyLCBl
bmRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCksIFNlbGVjdGlvblJhbmdlRGF0YTo6
UmVwYWludE1vZGU6Ok5vdGhpbmcpOworICAgIHZpZXctPnNlbGVjdGlvbigpLnNldCh7IHN0YXJ0
UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9LCBTZWxlY3Rpb25SYW5nZURhdGE6
OlJlcGFpbnRNb2RlOjpOb3RoaW5nKTsKICAgICAvLyBXZSBjYXB0dXJlIHVzaW5nIHNuYXBzaG90
RnJhbWVSZWN0KCkgYmVjYXVzZSB3ZSBmYWtlIHVwIHRoZSBzZWxlY3Rpb24gdXNpbmcKICAgICAv
LyBGcmFtZVZpZXcgYnV0IHNuYXBzaG90U2VsZWN0aW9uKCkgdXNlcyB0aGUgc2VsZWN0aW9uIGZy
b20gdGhlIEZyYW1lIGl0c2VsZi4KICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBz
aG90KHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb24oKS5ib3VuZHNDbGlw
cGVkVG9WaXNpYmxlQ29udGVudCgpLCBvcHRpb25zKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4IDdjMzVhNmI3NWQ0
YTlmZjljY2U4ZTc1MzhmMTI0MDIwNGQ1ZDNjMjcuLmEzOGFkY2Q4YzljZDBiZDA1OTlhZGJmYWZj
NGJjNDZkOGVkMGQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxl
Y3Rpb25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25SYW5nZURhdGEuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCog
cmVuZGVyZXJBZnRlclBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2ln
bmUKIAogc3RhdGljIGJvb2wgaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dCYgc2Vs
ZWN0aW9uKQogewotICAgIHJldHVybiAocmVuZGVyZXIuY2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwg
JnJlbmRlcmVyID09IHNlbGVjdGlvbi5zdGFydCB8fCAmcmVuZGVyZXIgPT0gc2VsZWN0aW9uLmVu
ZCkKKyAgICByZXR1cm4gKHJlbmRlcmVyLmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8ICZyZW5kZXJl
ciA9PSBzZWxlY3Rpb24uc3RhcnQoKSB8fCAmcmVuZGVyZXIgPT0gc2VsZWN0aW9uLmVuZCgpKQog
ICAgICAgICAmJiByZW5kZXJlci5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uTm9uZQogICAgICAgICAmJiByZW5kZXJlci5jb250YWluaW5nQmxvY2soKTsKIH0KQEAg
LTExNSwxNCArMTE1LDE0IEBAIHN0YXRpYyBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrQmVs
b3dWaWV3KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKIHN0YXRpYyBTZWxlY3Rpb25E
YXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24s
IGJvb2wgcmVwYWludERpZmZlcmVuY2UpCiB7Ci0gICAgU2VsZWN0aW9uRGF0YSBvbGRTZWxlY3Rp
b25EYXRhIHsgc2VsZWN0aW9uLnN0YXJ0UG9zaXRpb24sIHNlbGVjdGlvbi5lbmRQb3NpdGlvbiwg
eyB9LCB7IH0gfTsKKyAgICBTZWxlY3Rpb25EYXRhIG9sZFNlbGVjdGlvbkRhdGEgeyBzZWxlY3Rp
b24uc3RhcnRQb3NpdGlvbigpLCBzZWxlY3Rpb24uZW5kUG9zaXRpb24oKSwgeyB9LCB7IH0gfTsK
ICAgICAvLyBCbG9ja3MgY29udGFpbiBzZWxlY3RlZCBvYmplY3RzIGFuZCBmaWxsIGdhcHMgYmV0
d2VlbiB0aGVtLCBlaXRoZXIgb24gdGhlIGxlZnQsIHJpZ2h0LCBvciBpbiBiZXR3ZWVuIGxpbmVz
IGFuZCBibG9ja3MuCiAgICAgLy8gSW4gb3JkZXIgdG8gZ2V0IHRoZSByZXBhaW50IHJlY3Qgcmln
aHQsIHdlIGhhdmUgdG8gZXhhbWluZSBsZWZ0LCBtaWRkbGUsIGFuZCByaWdodCByZWN0cyBpbmRp
dmlkdWFsbHksIHNpbmNlIG90aGVyd2lzZQogICAgIC8vIHRoZSB1bmlvbiBvZiB0aG9zZSByZWN0
cyBtaWdodCByZW1haW4gdGhlIHNhbWUgZXZlbiB3aGVuIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZC4K
LSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0OworICAgIGF1dG8qIHN0
YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gbnVsbHB0
cjsKLSAgICBpZiAoc2VsZWN0aW9uLmVuZCkKLSAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQ
b3NpdGlvbigqc2VsZWN0aW9uLmVuZCwgc2VsZWN0aW9uLmVuZFBvc2l0aW9uLnZhbHVlKCkpOwor
ICAgIGlmIChzZWxlY3Rpb24uZW5kKCkpCisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9z
aXRpb24oKnNlbGVjdGlvbi5lbmQoKSwgc2VsZWN0aW9uLmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7
CiAgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc3RhcnQpOwogICAgIHdo
aWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVy
ZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAg
dm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBDb250ZXh0JiBzZWxlY3Rpb24sIFJl
cGFpbnRNb2RlIGJsb2NrUmVwYWludE0KIHsKICAgICAvLyBNYWtlIHN1cmUgYm90aCBvdXIgc3Rh
cnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVkLgogICAgIC8vIENoZWNrIHd3dy5tc25iYy5j
b20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8gZmluZCB0aGUgY2FzZSB3aGVyZSB0aGlzIGhh
cHBlbmVkLgotICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0ICYmICFzZWxlY3Rpb24uZW5kKSB8fCAo
c2VsZWN0aW9uLmVuZCAmJiAhc2VsZWN0aW9uLnN0YXJ0KSkKKyAgICBpZiAoKHNlbGVjdGlvbi5z
dGFydCgpICYmICFzZWxlY3Rpb24uZW5kKCkpIHx8IChzZWxlY3Rpb24uZW5kKCkgJiYgIXNlbGVj
dGlvbi5zdGFydCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEp1c3QgcmV0dXJuIGlmIHRo
ZSBzZWxlY3Rpb24gaGFzbid0IGNoYW5nZWQuCiAgICAgYXV0byBpc0NhcmV0ID0gbV9yZW5kZXJW
aWV3LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNDYXJldCgpOwpAQCAtMTcyLDE4ICsxNzIsMTggQEAg
dm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnNldChjb25zdCBDb250ZXh0JiBzZWxlY3Rpb24sIFJl
cGFpbnRNb2RlIGJsb2NrUmVwYWludE0KIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjbGVhcigp
CiB7CiAgICAgbV9yZW5kZXJWaWV3LmxheWVyKCktPnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMo
KTsKLSAgICBzZXQoU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0KCksIFNlbGVjdGlvblJhbmdl
RGF0YTo6UmVwYWludE1vZGU6Ok5ld01pbnVzT2xkKTsKKyAgICBzZXQoeyB9LCBTZWxlY3Rpb25S
YW5nZURhdGE6OlJlcGFpbnRNb2RlOjpOZXdNaW51c09sZCk7CiB9CiAKIHZvaWQgU2VsZWN0aW9u
UmFuZ2VEYXRhOjpyZXBhaW50KCkgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4g
cHJvY2Vzc2VkQmxvY2tzOwogICAgIFJlbmRlck9iamVjdCogZW5kID0gbnVsbHB0cjsKLSAgICBp
ZiAobV9zZWxlY3Rpb25Db250ZXh0LmVuZCkKLSAgICAgICAgZW5kID0gcmVuZGVyZXJBZnRlclBv
c2l0aW9uKCptX3NlbGVjdGlvbkNvbnRleHQuZW5kLCBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9z
aXRpb24udmFsdWUoKSk7Ci0gICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Io
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KTsKKyAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LmVu
ZCgpKQorICAgICAgICBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKm1fc2VsZWN0aW9uQ29u
dGV4dC5lbmQoKSwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uKCkudmFsdWUoKSk7Cisg
ICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3IobV9zZWxlY3Rpb25Db250ZXh0
LnN0YXJ0KCkpOwogICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5j
dXJyZW50KCk7IHJlbmRlcmVyICYmIHJlbmRlcmVyICE9IGVuZDsgcmVuZGVyZXIgPSBzZWxlY3Rp
b25JdGVyYXRvci5uZXh0KCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlci0+Y2FuQmVTZWxlY3Rp
b25MZWFmKCkgJiYgcmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0ICYmIHJlbmRl
cmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQpCisgICAgICAgIGlmICghcmVuZGVyZXItPmNh
bkJlU2VsZWN0aW9uTGVhZigpICYmIHJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFy
dCgpICYmIHJlbmRlcmVyICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAocmVuZGVyZXItPnNlbGVjdGlvblN0YXRlKCkgPT0gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMDAs
MTMgKzIwMCwxMyBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6cmVwYWludCgpIGNvbnN0CiBJ
bnRSZWN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyhDbGlwVG9WaXNpYmxlQ29u
dGVudCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICBTZWxlY3Rpb25EYXRhOjpS
ZW5kZXJlck1hcCByZW5kZXJlcnM7Ci0gICAgUmVuZGVyT2JqZWN0KiBzdGFydCA9IG1fc2VsZWN0
aW9uQ29udGV4dC5zdGFydDsKKyAgICBhdXRvKiBzdGFydCA9IG1fc2VsZWN0aW9uQ29udGV4dC5z
dGFydCgpOwogICAgIFJlbmRlck9iamVjdCogc3RvcCA9IG51bGxwdHI7Ci0gICAgaWYgKG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmQpCi0gICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24o
Km1fc2VsZWN0aW9uQ29udGV4dC5lbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52
YWx1ZSgpKTsKKyAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAgICAgICBzdG9w
ID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKCptX3NlbGVjdGlvbkNvbnRleHQuZW5kKCksIG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbigpLnZhbHVlKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJh
dG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHN0YXJ0KTsKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQg
IT0gc3RvcCkgewotICAgICAgICBpZiAoKHN0YXJ0LT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBz
dGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25D
b250ZXh0LmVuZCkKKyAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwg
c3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rp
b25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkg
IT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3Mg
YXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBU
aGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KICAgICAgICAgICAgIHJlbmRlcmVycy5zZXQo
c3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlw
VG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CkBAIC0yNDMs
MjQgKzI0MywyNCBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkoY29uc3QgQ29udGV4
dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogICAgIGZvciAoYXV0byogcmVu
ZGVyZXIgOiBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5rZXlzKCkpCiAgICAgICAgIHJlbmRl
cmVyLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9u
ZSk7CiAgICAgbV9zZWxlY3Rpb25Db250ZXh0ID0gbmV3U2VsZWN0aW9uOworICAgIGF1dG8qIHNl
bGVjdGlvblN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCk7CiAgICAgLy8gVXBkYXRl
IHRoZSBzZWxlY3Rpb24gc3RhdHVzIG9mIGFsbCBvYmplY3RzIGJldHdlZW4gc2VsZWN0aW9uU3Rh
cnQgYW5kIHNlbGVjdGlvbkVuZAotICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgJiYg
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQpCi0gICAg
ICAgIG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydC0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGgpOworICAgIGlmIChzZWxlY3Rpb25TdGFydCAmJiBz
ZWxlY3Rpb25TdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIHNlbGVj
dGlvblN0YXJ0LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uQm90aCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuc3Rh
cnQpCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQtPnNldFNlbGVjdGlvblN0
YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCk7Ci0gICAgICAgIGlmICht
X3NlbGVjdGlvbkNvbnRleHQuZW5kKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25Db250ZXh0LmVu
ZC0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCk7
CisgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCkKKyAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0
LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQp
OworICAgICAgICBpZiAoYXV0byogZW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQorICAg
ICAgICAgICAgZW5kLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uRW5kKTsKICAgICB9CiAKLSAgICBhdXRvKiBzZWxlY3Rpb25TdGFydCA9IG1fc2VsZWN0
aW9uQ29udGV4dC5zdGFydDsKLSAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gbV9zZWxlY3Rp
b25Db250ZXh0LmVuZDsKICAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCA9IG51bGxwdHI7
CisgICAgYXV0byogc2VsZWN0aW9uRGF0YUVuZCA9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKTsK
ICAgICBpZiAoc2VsZWN0aW9uRGF0YUVuZCkKLSAgICAgICAgc2VsZWN0aW9uRW5kID0gcmVuZGVy
ZXJBZnRlclBvc2l0aW9uKCpzZWxlY3Rpb25EYXRhRW5kLCBtX3NlbGVjdGlvbkNvbnRleHQuZW5k
UG9zaXRpb24udmFsdWUoKSk7CisgICAgICAgIHNlbGVjdGlvbkVuZCA9IHJlbmRlcmVyQWZ0ZXJQ
b3NpdGlvbigqc2VsZWN0aW9uRGF0YUVuZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9u
KCkudmFsdWUoKSk7CiAgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc2Vs
ZWN0aW9uU3RhcnQpOwogICAgIGZvciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9u
U3RhcnQ7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0aW9uRW5k
OyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKLSAgICAgICAg
aWYgKGN1cnJlbnRSZW5kZXJlciA9PSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgfHwgY3VycmVu
dFJlbmRlcmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQpCisgICAgICAgIGlmIChjdXJyZW50
UmVuZGVyZXIgPT0gc2VsZWN0aW9uU3RhcnQgfHwgY3VycmVudFJlbmRlcmVyID09IG1fc2VsZWN0
aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWN1
cnJlbnRSZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTMwOCw4ICszMDgsOCBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkoY29u
c3QgQ29udGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogICAgICAgICBh
dXRvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRSZW5kZXJlcnMuZ2V0KHJlbmRlcmVyKTsKICAgICAg
ICAgYXV0byogb2xkSW5mbyA9IHNlbGVjdGVkUmVuZGVyZXJJbmZvLnZhbHVlLmdldCgpOwogICAg
ICAgICBpZiAoIW5ld0luZm8gfHwgb2xkSW5mby0+cmVjdCgpICE9IG5ld0luZm8tPnJlY3QoKSB8
fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRlKCkKLSAgICAgICAgICAgIHx8ICht
X3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgPT0gcmVuZGVyZXIgJiYgb2xkU2VsZWN0aW9uRGF0YS5z
dGFydFBvc2l0aW9uICE9IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydFBvc2l0aW9uKQotICAgICAg
ICAgICAgfHwgKG1fc2VsZWN0aW9uQ29udGV4dC5lbmQgPT0gcmVuZGVyZXIgJiYgb2xkU2VsZWN0
aW9uRGF0YS5lbmRQb3NpdGlvbiAhPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24pKSB7
CisgICAgICAgICAgICB8fCAobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgPT0gcmVuZGVyZXIg
JiYgb2xkU2VsZWN0aW9uRGF0YS5zdGFydFBvc2l0aW9uICE9IG1fc2VsZWN0aW9uQ29udGV4dC5z
dGFydFBvc2l0aW9uKCkpCisgICAgICAgICAgICB8fCAobV9zZWxlY3Rpb25Db250ZXh0LmVuZCgp
ID09IHJlbmRlcmVyICYmIG9sZFNlbGVjdGlvbkRhdGEuZW5kUG9zaXRpb24gIT0gbV9zZWxlY3Rp
b25Db250ZXh0LmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICBvbGRJbmZvLT5yZXBhaW50
KCk7CiAgICAgICAgICAgICBpZiAobmV3SW5mbykgewogICAgICAgICAgICAgICAgIG5ld0luZm8t
PnJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25SYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURh
dGEuaAppbmRleCBmNDdhZGMwMGU4Yzg1NDE1MmU2ODM5YWM3MjY4ZTIwODRmNmMxZDcyLi5kN2M0
YzEyZGJkZGNkMGNmMjQxMzBkNDM4ZmJhYTJjOWY4MTg0YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCkBAIC00NCwzNiArNDQsNDIgQEAgY2xh
c3MgU2VsZWN0aW9uUmFuZ2VEYXRhIHsKIHB1YmxpYzoKICAgICBTZWxlY3Rpb25SYW5nZURhdGEo
UmVuZGVyVmlldyYpOwogICAgIAotICAgIHN0cnVjdCBDb250ZXh0IHsKLSAgICAgICAgQ29udGV4
dCgpCi0gICAgICAgIHsgfQotCi0gICAgICAgIENvbnRleHQoUmVuZGVyT2JqZWN0KiBzdGFydFJl
bmRlcmVyLCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICAgICAgOiBzdGFydChzdGFydFJlbmRlcmVyKQot
ICAgICAgICAgICAgLCBlbmQoZW5kUmVuZGVyZXIpCi0gICAgICAgICAgICAsIHN0YXJ0UG9zaXRp
b24oc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICAsIGVuZFBvc2l0aW9uKGVuZE9mZnNldCkKLSAg
ICAgICAgeyB9CisgICAgY2xhc3MgQ29udGV4dCB7CisgICAgcHVibGljOgorICAgICAgICBDb250
ZXh0KCkgPSBkZWZhdWx0OworICAgICAgICBDb250ZXh0KFJlbmRlck9iamVjdCogc3RhcnQsIFJl
bmRlck9iamVjdCogZW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0ID8gbWFrZVdlYWtQdHIoKnN0YXJ0KSA6IG51
bGxwdHIpCisgICAgICAgICAgICAsIG1fZW5kKGVuZCA/IG1ha2VXZWFrUHRyKCplbmQpIDogbnVs
bHB0cikKKyAgICAgICAgICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0T2Zmc2V0KQorICAgICAg
ICAgICAgLCBtX2VuZFBvc2l0aW9uKGVuZE9mZnNldCkKKyAgICAgICAgeworICAgICAgICB9CiAK
LSAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydCB7IG51bGxwdHIgfTsKLSAgICAgICAgUmVuZGVy
T2JqZWN0KiBlbmQgeyBudWxscHRyIH07Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHN0YXJ0UG9zaXRpb247Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvc2l0
aW9uOworICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dC5nZXQoKTsgfQorICAgICAgICBSZW5kZXJPYmplY3QqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kLmdldCgpOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247IH0KKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gZW5kUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VuZFBvc2l0aW9u
OyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRleHQmIG90aGVyKSBjb25z
dAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gb3RoZXIuc3RhcnQgJiYg
ZW5kID09IG90aGVyLmVuZCAmJiBzdGFydFBvc2l0aW9uID09IG90aGVyLnN0YXJ0UG9zaXRpb24g
JiYgZW5kUG9zaXRpb24gPT0gb3RoZXIuZW5kUG9zaXRpb247CisgICAgICAgICAgICByZXR1cm4g
bV9zdGFydCA9PSBvdGhlci5tX3N0YXJ0ICYmIG1fZW5kID09IG90aGVyLm1fZW5kICYmIG1fc3Rh
cnRQb3NpdGlvbiA9PSBvdGhlci5tX3N0YXJ0UG9zaXRpb24gJiYgbV9lbmRQb3NpdGlvbiA9PSBv
dGhlci5tX2VuZFBvc2l0aW9uOwogICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBX
ZWFrUHRyPFJlbmRlck9iamVjdD4gbV9zdGFydDsKKyAgICAgICAgV2Vha1B0cjxSZW5kZXJPYmpl
Y3Q+IG1fZW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3N0YXJ0UG9zaXRp
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fZW5kUG9zaXRpb247CiAgICAg
fTsKIAogICAgIGVudW0gY2xhc3MgUmVwYWludE1vZGUgeyBOZXdYT1JPbGQsIE5ld01pbnVzT2xk
LCBOb3RoaW5nIH07CiAgICAgdm9pZCBzZXQoY29uc3QgQ29udGV4dCYsIFJlcGFpbnRNb2RlID0g
UmVwYWludE1vZGU6Ok5ld1hPUk9sZCk7CiAgICAgY29uc3QgQ29udGV4dCYgZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0OyB9CiAKLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0OyB9Ci0gICAgUmVuZGVy
T2JqZWN0KiBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuZW5kOyB9Ci0g
ICAgdW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fc2VsZWN0aW9uQ29u
dGV4dC5zdGFydFBvc2l0aW9uKTsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydFBvc2l0
aW9uLnZhbHVlKCk7IH0KLSAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJU
KG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbik7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRl
eHQuZW5kUG9zaXRpb24udmFsdWUoKTsgfQorICAgIFJlbmRlck9iamVjdCogc3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKTsgfQorICAgIFJlbmRlck9iamVj
dCogZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOyB9CisgICAg
dW5zaWduZWQgc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fc2VsZWN0aW9uQ29udGV4
dC5zdGFydFBvc2l0aW9uKCkpOyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRp
b24oKS52YWx1ZSgpOyB9CisgICAgdW5zaWduZWQgZW5kUG9zaXRpb24oKSBjb25zdCB7IEFTU0VS
VChtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24oKSk7IHJldHVybiBtX3NlbGVjdGlvbkNv
bnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpOyB9CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAg
SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2li
bGVDb250ZW50OjpObyk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322400</attachid>
            <date>2017-10-02 11:28:44 -0700</date>
            <delta_ts>2017-10-02 13:06:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177677-20171002112844.patch</filename>
            <type>text/plain</type>
            <size>15677</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRlMTY5OWFhNDZlMzQ1
NzAzMTM0Mjk5MjY5YWM1YzU0MThhNDU2ZC4uNTdiNDhlZDJkMTZlOWRmMzdjMmQ4YThjMzI4NzY5
ZTIxYWJkOGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEwLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VsZWN0aW9uUmFuZ2VEYXRh
IHNob3VsZCBub3QgaG9sZCByYXcgUmVuZGVyT2JqZWN0IHBvaW50ZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2NzcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM0NzYzMDYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dCBzdGFydCBhbmQgZW5kIHJl
bmRlcmVycycgbGlmZXRpbWUgaXMgbm90IHN0cmljdGx5IHRpZWQKKyAgICAgICAgdG8gdGhlIGxp
ZmV0aW1lIG9mIFNlbGVjdGlvblJhbmdlRGF0YS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSk6CisgICAgICAg
ICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJ
bWFnZUZvclJhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRSZW5kZXJlckZvclNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdl
RGF0YTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y2xlYXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpyZXBhaW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjpzdGFydCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQ6OmVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQ6OnN0YXJ0UG9zaXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0OjplbmRQb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRl
eHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VE
YXRhOjpzdGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6
OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OnN0YXJ0
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpl
bmRQb3NpdGlvbiBjb25zdCk6CisKIDIwMTctMTAtMDIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtZW1vcnkgbGVha3MgaW4gUmVuZGVyTXVsdGlDb2x1
bW5GbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDc0
NzA3NzljNzVlZmE5MmJmNGYyNzlmNTg2YmZmNWI3ZjQ5MjdiYjUuLmMwMzYzZGM0YTZmMTVhMGU3
N2VkZjEzYTZmYTA1NmYxNTVkNjg3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCkBAIC0yMTE0LDcgKzIxMTQsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1
cGRhdGVBcHBlYXJhbmNlKCkKICAgICAgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVu
ZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwogICAgICAgICBpbnQgZW5kT2Zmc2V0
ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChzdGFy
dE9mZnNldCA+PSAwICYmIGVuZE9mZnNldCA+PSAwKTsKLSAgICAgICAgdmlldy0+c2VsZWN0aW9u
KCkuc2V0KFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dChzdGFydFJlbmRlcmVyLCBlbmRSZW5k
ZXJlciwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkpOworICAgICAgICB2aWV3LT5zZWxlY3Rpb24o
KS5zZXQoeyBzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCkgfSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCAxNTU5MzExNGM3
NWZkNWZhYzk5Y2Q5YjEwYzg4NjQxMzczNDQ0ZmE4Li5lNzk3Y2M5MmE0MzQwMWVmNTFhMjg3YTM4
ZTA5MzQ1OTAyOGE2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAg
LTE4NSw3ICsxODUsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJh
bWUmIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9yY2VCbGFjawogICAgIGludCBzdGFydE9m
ZnNldCA9IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgaW50IGVuZE9mZnNl
dCA9IGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIEFTU0VSVChzdGFydE9mZnNl
dCA+PSAwICYmIGVuZE9mZnNldCA+PSAwKTsKLSAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0KHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KSwgU2VsZWN0aW9uUmFuZ2VEYXRhOjpSZXBhaW50TW9kZTo6Tm90
aGluZyk7CisgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVu
ZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmRPZmZzZXQpIH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWludE1vZGU6Ok5v
dGhpbmcpOwogICAgIC8vIFdlIGNhcHR1cmUgdXNpbmcgc25hcHNob3RGcmFtZVJlY3QoKSBiZWNh
dXNlIHdlIGZha2UgdXAgdGhlIHNlbGVjdGlvbiB1c2luZwogICAgIC8vIEZyYW1lVmlldyBidXQg
c25hcHNob3RTZWxlY3Rpb24oKSB1c2VzIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRnJhbWUgaXRz
ZWxmLgogICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RGcmFt
ZVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbigpLmJvdW5kc0NsaXBwZWRUb1Zpc2libGVDb250
ZW50KCksIG9wdGlvbnMpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggN2MzNWE2Yjc1ZDRhOWZmOWNjZThlNzUzOGYx
MjQwMjA0ZDVkM2MyNy4uYTM4YWRjZDhjOWNkMGJkMDU5OWFkYmZhZmM0YmM0NmQ4ZWQwZDQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckFmdGVyUG9z
aXRpb24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZQogCiBzdGF0aWMgYm9v
bCBpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24pCiB7Ci0gICAg
cmV0dXJuIChyZW5kZXJlci5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCAmcmVuZGVyZXIgPT0gc2Vs
ZWN0aW9uLnN0YXJ0IHx8ICZyZW5kZXJlciA9PSBzZWxlY3Rpb24uZW5kKQorICAgIHJldHVybiAo
cmVuZGVyZXIuY2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgJnJlbmRlcmVyID09IHNlbGVjdGlvbi5z
dGFydCgpIHx8ICZyZW5kZXJlciA9PSBzZWxlY3Rpb24uZW5kKCkpCiAgICAgICAgICYmIHJlbmRl
cmVyLnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lCiAgICAg
ICAgICYmIHJlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpOwogfQpAQCAtMTE1LDE0ICsxMTUsMTQg
QEAgc3RhdGljIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcikKIAogc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25z
dCBTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbCByZXBhaW50RGlm
ZmVyZW5jZSkKIHsKLSAgICBTZWxlY3Rpb25EYXRhIG9sZFNlbGVjdGlvbkRhdGEgeyBzZWxlY3Rp
b24uc3RhcnRQb3NpdGlvbiwgc2VsZWN0aW9uLmVuZFBvc2l0aW9uLCB7IH0sIHsgfSB9OworICAg
IFNlbGVjdGlvbkRhdGEgb2xkU2VsZWN0aW9uRGF0YSB7IHNlbGVjdGlvbi5zdGFydFBvc2l0aW9u
KCksIHNlbGVjdGlvbi5lbmRQb3NpdGlvbigpLCB7IH0sIHsgfSB9OwogICAgIC8vIEJsb2NrcyBj
b250YWluIHNlbGVjdGVkIG9iamVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3ZWVuIHRoZW0sIGVpdGhl
ciBvbiB0aGUgbGVmdCwgcmlnaHQsIG9yIGluIGJldHdlZW4gbGluZXMgYW5kIGJsb2Nrcy4KICAg
ICAvLyBJbiBvcmRlciB0byBnZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdodCwgd2UgaGF2ZSB0byBl
eGFtaW5lIGxlZnQsIG1pZGRsZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2aWR1YWxseSwgc2luY2Ug
b3RoZXJ3aXNlCiAgICAgLy8gdGhlIHVuaW9uIG9mIHRob3NlIHJlY3RzIG1pZ2h0IHJlbWFpbiB0
aGUgc2FtZSBldmVuIHdoZW4gY2hhbmdlcyBoYXZlIG9jY3VycmVkLgotICAgIFJlbmRlck9iamVj
dCogc3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQ7CisgICAgYXV0byogc3RhcnQgPSBzZWxlY3Rpb24u
c3RhcnQoKTsKICAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSBudWxscHRyOwotICAgIGlmIChzZWxl
Y3Rpb24uZW5kKQotICAgICAgICBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKCpzZWxlY3Rp
b24uZW5kLCBzZWxlY3Rpb24uZW5kUG9zaXRpb24udmFsdWUoKSk7CisgICAgaWYgKHNlbGVjdGlv
bi5lbmQoKSkKKyAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqc2VsZWN0aW9u
LmVuZCgpLCBzZWxlY3Rpb24uZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKICAgICBTZWxlY3Rpb25J
dGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzdGFydCk7CiAgICAgd2hpbGUgKHN0YXJ0ICYmIHN0
YXJ0ICE9IHN0b3ApIHsKICAgICAgICAgaWYgKGlzVmFsaWRSZW5kZXJlckZvclNlbGVjdGlvbigq
c3RhcnQsIHNlbGVjdGlvbikpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFNlbGVjdGlvblJh
bmdlRGF0YTo6c2V0KGNvbnN0IENvbnRleHQmIHNlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TQogewogICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVj
dHMgYXJlIGRlZmluZWQuCiAgICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQgdHJ5IGNsaWNr
aW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQuCi0gICAgaWYg
KChzZWxlY3Rpb24uc3RhcnQgJiYgIXNlbGVjdGlvbi5lbmQpIHx8IChzZWxlY3Rpb24uZW5kICYm
ICFzZWxlY3Rpb24uc3RhcnQpKQorICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0KCkgJiYgIXNlbGVj
dGlvbi5lbmQoKSkgfHwgKHNlbGVjdGlvbi5lbmQoKSAmJiAhc2VsZWN0aW9uLnN0YXJ0KCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgLy8gSnVzdCByZXR1cm4gaWYgdGhlIHNlbGVjdGlvbiBoYXNu
J3QgY2hhbmdlZC4KICAgICBhdXRvIGlzQ2FyZXQgPSBtX3JlbmRlclZpZXcuZnJhbWUoKS5zZWxl
Y3Rpb24oKS5pc0NhcmV0KCk7CkBAIC0xNzIsMTggKzE3MiwxOCBAQCB2b2lkIFNlbGVjdGlvblJh
bmdlRGF0YTo6c2V0KGNvbnN0IENvbnRleHQmIHNlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TQogdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmNsZWFyKCkKIHsKICAgICBtX3JlbmRl
clZpZXcubGF5ZXIoKS0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOwotICAgIHNldChTZWxl
Y3Rpb25SYW5nZURhdGE6OkNvbnRleHQoKSwgU2VsZWN0aW9uUmFuZ2VEYXRhOjpSZXBhaW50TW9k
ZTo6TmV3TWludXNPbGQpOworICAgIHNldCh7IH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWlu
dE1vZGU6Ok5ld01pbnVzT2xkKTsKIH0KIAogdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OnJlcGFp
bnQoKSBjb25zdAogewogICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPiBwcm9jZXNzZWRCbG9ja3M7
CiAgICAgUmVuZGVyT2JqZWN0KiBlbmQgPSBudWxscHRyOwotICAgIGlmIChtX3NlbGVjdGlvbkNv
bnRleHQuZW5kKQotICAgICAgICBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oKm1fc2VsZWN0
aW9uQ29udGV4dC5lbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52YWx1ZSgpKTsK
LSAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihtX3NlbGVjdGlvbkNvbnRl
eHQuc3RhcnQpOworICAgIGlmIChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIGVu
ZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpLCBtX3Nl
bGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKKyAgICBTZWxlY3Rpb25JdGVy
YXRvciBzZWxlY3Rpb25JdGVyYXRvcihtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSk7CiAgICAg
Zm9yIChhdXRvKiByZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLmN1cnJlbnQoKTsgcmVuZGVy
ZXIgJiYgcmVuZGVyZXIgIT0gZW5kOyByZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQo
KSkgewotICAgICAgICBpZiAoIXJlbmRlcmVyLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSAmJiByZW5k
ZXJlciAhPSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQgJiYgcmVuZGVyZXIgIT0gbV9zZWxlY3Rp
b25Db250ZXh0LmVuZCkKKyAgICAgICAgaWYgKCFyZW5kZXJlci0+Y2FuQmVTZWxlY3Rpb25MZWFm
KCkgJiYgcmVuZGVyZXIgIT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgJiYgcmVuZGVyZXIg
IT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChyZW5kZXJlci0+c2VsZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbk5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIwMCwxMyArMjAwLDEzIEBAIHZv
aWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjpyZXBhaW50KCkgY29uc3QKIEludFJlY3QgU2VsZWN0aW9u
UmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2li
bGVDb250ZW50KSBjb25zdAogewogICAgIFNlbGVjdGlvbkRhdGE6OlJlbmRlcmVyTWFwIHJlbmRl
cmVyczsKLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0
OworICAgIGF1dG8qIHN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCk7CiAgICAgUmVu
ZGVyT2JqZWN0KiBzdG9wID0gbnVsbHB0cjsKLSAgICBpZiAobV9zZWxlY3Rpb25Db250ZXh0LmVu
ZCkKLSAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbigqbV9zZWxlY3Rpb25Db250
ZXh0LmVuZCwgbV9zZWxlY3Rpb25Db250ZXh0LmVuZFBvc2l0aW9uLnZhbHVlKCkpOworICAgIGlm
IChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVy
UG9zaXRpb24oKm1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSwgbV9zZWxlY3Rpb25Db250ZXh0LmVu
ZFBvc2l0aW9uKCkudmFsdWUoKSk7CiAgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRl
cmF0b3Ioc3RhcnQpOwogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7Ci0gICAg
ICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0
aW9uQ29udGV4dC5zdGFydCB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKQorICAg
ICAgICBpZiAoKHN0YXJ0LT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBzdGFydCA9PSBtX3NlbGVj
dGlvbkNvbnRleHQuc3RhcnQoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkp
CiAgICAgICAgICAgICAmJiBzdGFydC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUg
Zm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFt
aW5lZCBhcyB3ZWxsLgogICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50
ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKQEAgLTI0MywyNCArMjQzLDI0IEBAIHZv
aWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24s
IFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgZm9yIChhdXRvKiByZW5kZXJlciA6IG9sZFNlbGVj
dGlvbkRhdGEucmVuZGVyZXJzLmtleXMoKSkKICAgICAgICAgcmVuZGVyZXItPnNldFNlbGVjdGlv
blN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKTsKICAgICBtX3NlbGVj
dGlvbkNvbnRleHQgPSBuZXdTZWxlY3Rpb247CisgICAgYXV0byogc2VsZWN0aW9uU3RhcnQgPSBt
X3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKTsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBz
dGF0dXMgb2YgYWxsIG9iamVjdHMgYmV0d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9u
RW5kCi0gICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCAmJiBtX3NlbGVjdGlvbkNvbnRl
eHQuc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCkKLSAgICAgICAgbV9zZWxlY3Rpb25D
b250ZXh0LnN0YXJ0LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2Vs
ZWN0aW9uQm90aCk7CisgICAgaWYgKHNlbGVjdGlvblN0YXJ0ICYmIHNlbGVjdGlvblN0YXJ0ID09
IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKKyAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNl
bGVjdGlvblN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Cb3RoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCkKLSAgICAgICAgICAg
IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydC0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChSZW5k
ZXJPYmplY3Q6OlNlbGVjdGlvblN0YXJ0KTsKLSAgICAgICAgaWYgKG1fc2VsZWN0aW9uQ29udGV4
dC5lbmQpCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkNvbnRleHQuZW5kLT5zZXRTZWxlY3Rpb25T
dGF0ZUlmTmVlZGVkKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKTsKKyAgICAgICAgaWYgKHNl
bGVjdGlvblN0YXJ0KQorICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQtPnNldFNlbGVjdGlvblN0
YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCk7CisgICAgICAgIGlmIChh
dXRvKiBlbmQgPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCisgICAgICAgICAgICBlbmQtPnNl
dFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpOwogICAg
IH0KIAotICAgIGF1dG8qIHNlbGVjdGlvblN0YXJ0ID0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0
OwotICAgIGF1dG8qIHNlbGVjdGlvbkRhdGFFbmQgPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kOwog
ICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKKyAgICBhdXRvKiBzZWxl
Y3Rpb25EYXRhRW5kID0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpOwogICAgIGlmIChzZWxlY3Rp
b25EYXRhRW5kKQotICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24o
KnNlbGVjdGlvbkRhdGFFbmQsIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52YWx1ZSgp
KTsKKyAgICAgICAgc2VsZWN0aW9uRW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKCpzZWxlY3Rp
b25EYXRhRW5kLCBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9zaXRpb24oKS52YWx1ZSgpKTsKICAg
ICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAg
ICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJl
bmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJl
ciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICBpZiAoY3VycmVudFJlbmRl
cmVyID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9z
ZWxlY3Rpb25Db250ZXh0LmVuZCkKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBzZWxl
Y3Rpb25TdGFydCB8fCBjdXJyZW50UmVuZGVyZXIgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5j
YW5CZVNlbGVjdGlvbkxlYWYoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzA4LDggKzMw
OCw4IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdT
ZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgIGF1dG8qIG5ld0luZm8gPSBu
ZXdTZWxlY3RlZFJlbmRlcmVycy5nZXQocmVuZGVyZXIpOwogICAgICAgICBhdXRvKiBvbGRJbmZv
ID0gc2VsZWN0ZWRSZW5kZXJlckluZm8udmFsdWUuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW5m
byB8fCBvbGRJbmZvLT5yZWN0KCkgIT0gbmV3SW5mby0+cmVjdCgpIHx8IG9sZEluZm8tPnN0YXRl
KCkgIT0gbmV3SW5mby0+c3RhdGUoKQotICAgICAgICAgICAgfHwgKG1fc2VsZWN0aW9uQ29udGV4
dC5zdGFydCA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLnN0YXJ0UG9zaXRpb24gIT0g
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICB8fCAobV9zZWxl
Y3Rpb25Db250ZXh0LmVuZCA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25EYXRhLmVuZFBvc2l0
aW9uICE9IG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbikpIHsKKyAgICAgICAgICAgIHx8
IChtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSA9PSByZW5kZXJlciAmJiBvbGRTZWxlY3Rpb25E
YXRhLnN0YXJ0UG9zaXRpb24gIT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24oKSkK
KyAgICAgICAgICAgIHx8IChtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkgPT0gcmVuZGVyZXIgJiYg
b2xkU2VsZWN0aW9uRGF0YS5lbmRQb3NpdGlvbiAhPSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kUG9z
aXRpb24oKSkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAg
IGlmIChuZXdJbmZvKSB7CiAgICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCmluZGV4IGY0N2Fk
YzAwZThjODU0MTUyZTY4MzlhYzcyNjhlMjA4NGY2YzFkNzIuLmQ3YzRjMTJkYmRkY2QwY2YyNDEz
MGQ0MzhmYmFhMmM5ZjgxODRhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TZWxlY3Rpb25SYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmgKQEAgLTQ0LDM2ICs0NCw0MiBAQCBjbGFzcyBTZWxlY3Rpb25SYW5n
ZURhdGEgewogcHVibGljOgogICAgIFNlbGVjdGlvblJhbmdlRGF0YShSZW5kZXJWaWV3Jik7CiAg
ICAgCi0gICAgc3RydWN0IENvbnRleHQgewotICAgICAgICBDb250ZXh0KCkKLSAgICAgICAgeyB9
Ci0KLSAgICAgICAgQ29udGV4dChSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9i
amVjdCogZW5kUmVuZGVyZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgICAgICA6IHN0YXJ0KHN0YXJ0UmVuZGVyZXIpCi0gICAgICAgICAgICAsIGVu
ZChlbmRSZW5kZXJlcikKLSAgICAgICAgICAgICwgc3RhcnRQb3NpdGlvbihzdGFydE9mZnNldCkK
LSAgICAgICAgICAgICwgZW5kUG9zaXRpb24oZW5kT2Zmc2V0KQotICAgICAgICB7IH0KKyAgICBj
bGFzcyBDb250ZXh0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvbnRleHQoKSA9IGRlZmF1bHQ7
CisgICAgICAgIENvbnRleHQoUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgICAgICA6
IG1fc3RhcnQoc3RhcnQgPyBtYWtlV2Vha1B0cigqc3RhcnQpIDogbnVsbHB0cikKKyAgICAgICAg
ICAgICwgbV9lbmQoZW5kID8gbWFrZVdlYWtQdHIoKmVuZCkgOiBudWxscHRyKQorICAgICAgICAg
ICAgLCBtX3N0YXJ0UG9zaXRpb24oc3RhcnRPZmZzZXQpCisgICAgICAgICAgICAsIG1fZW5kUG9z
aXRpb24oZW5kT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJP
YmplY3QqIHN0YXJ0IHsgbnVsbHB0ciB9OwotICAgICAgICBSZW5kZXJPYmplY3QqIGVuZCB7IG51
bGxwdHIgfTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3NpdGlvbjsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zaXRpb247CisgICAgICAgIFJl
bmRlck9iamVjdCogc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LmdldCgpOyB9CisgICAg
ICAgIFJlbmRlck9iamVjdCogZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQuZ2V0KCk7IH0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRQb3NpdGlvbjsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBl
bmRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kUG9zaXRpb247IH0KIAogICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGV4dCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGFydCA9PSBvdGhlci5zdGFydCAmJiBlbmQgPT0gb3RoZXIuZW5k
ICYmIHN0YXJ0UG9zaXRpb24gPT0gb3RoZXIuc3RhcnRQb3NpdGlvbiAmJiBlbmRQb3NpdGlvbiA9
PSBvdGhlci5lbmRQb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBtX3N0YXJ0ID09IG90aGVy
Lm1fc3RhcnQgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQgJiYgbV9zdGFydFBvc2l0aW9uID09IG90
aGVyLm1fc3RhcnRQb3NpdGlvbiAmJiBtX2VuZFBvc2l0aW9uID09IG90aGVyLm1fZW5kUG9zaXRp
b247CiAgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8UmVuZGVyT2Jq
ZWN0PiBtX3N0YXJ0OworICAgICAgICBXZWFrUHRyPFJlbmRlck9iamVjdD4gbV9lbmQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhcnRQb3NpdGlvbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV9lbmRQb3NpdGlvbjsKICAgICB9OwogCiAgICAgZW51bSBj
bGFzcyBSZXBhaW50TW9kZSB7IE5ld1hPUk9sZCwgTmV3TWludXNPbGQsIE5vdGhpbmcgfTsKICAg
ICB2b2lkIHNldChjb25zdCBDb250ZXh0JiwgUmVwYWludE1vZGUgPSBSZXBhaW50TW9kZTo6TmV3
WE9ST2xkKTsKICAgICBjb25zdCBDb250ZXh0JiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dGlvbkNvbnRleHQ7IH0KIAotICAgIFJlbmRlck9iamVjdCogc3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQ7IH0KLSAgICBSZW5kZXJPYmplY3QqIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5lbmQ7IH0KLSAgICB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRp
b24pOyByZXR1cm4gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24udmFsdWUoKTsgfQot
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9zZWxlY3Rpb25Db250
ZXh0LmVuZFBvc2l0aW9uKTsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlvbi52
YWx1ZSgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vs
ZWN0aW9uQ29udGV4dC5zdGFydCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBlbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCk7IH0KKyAgICB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0UG9zaXRpb24o
KSk7IHJldHVybiBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnRQb3NpdGlvbigpLnZhbHVlKCk7IH0K
KyAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fc2VsZWN0aW9uQ29u
dGV4dC5lbmRQb3NpdGlvbigpKTsgcmV0dXJuIG1fc2VsZWN0aW9uQ29udGV4dC5lbmRQb3NpdGlv
bigpLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgY2xlYXIoKTsKICAgICBJbnRSZWN0IGJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIGNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Ok5vKTsg
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>