<?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>160175</bug_id>
          
          <creation_ts>2016-07-25 15:34:39 -0700</creation_ts>
          <short_desc>Cleanup RenderTable*::createAnonymous*</short_desc>
          <delta_ts>2016-07-25 19:41:14 -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></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>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214355</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-07-25 15:34:39 -0700</bug_when>
    <thetext>Type tightening + they are somewhat misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214363</commentid>
    <comment_count>1</comment_count>
      <attachid>284536</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-07-25 15:46:47 -0700</bug_when>
    <thetext>Created attachment 284536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214366</commentid>
    <comment_count>2</comment_count>
      <attachid>284536</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-07-25 15:58:13 -0700</bug_when>
    <thetext>Comment on attachment 284536
Patch

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

&gt; Source/WebCore/rendering/RenderTable.cpp:221
&gt; -    section-&gt;addChild(child);
&gt; +    section-&gt;addChild(section);

Revert this bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214433</commentid>
    <comment_count>3</comment_count>
      <attachid>284559</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-07-25 18:54:02 -0700</bug_when>
    <thetext>Created attachment 284559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214440</commentid>
    <comment_count>4</comment_count>
      <attachid>284559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 19:41:09 -0700</bug_when>
    <thetext>Comment on attachment 284559
Patch

Clearing flags on attachment: 284559

Committed r203708: &lt;http://trac.webkit.org/changeset/203708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214441</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 19:41:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284536</attachid>
            <date>2016-07-25 15:46:47 -0700</date>
            <delta_ts>2016-07-25 16:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160175-20160725154539.patch</filename>
            <type>text/plain</type>
            <size>24479</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZkOGE5ZTAzZDA2MjZh
OGU3NzMwZDgyM2M5YmIyMzQ4NjRkYzI0My4uZmZkNDk2Mjc3MWQ2NTVmMzA1ZTY0ZGU1MTgxYTg0
ZWViYTVmZDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTA3LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBSZW5kZXJUYWJs
ZSo6OmNyZWF0ZUFub255bW91cyoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MDE3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2gKKyAgICAgICAgMS4gdGlnaHRlbnMgdGhlIHR5cGUgb24g
Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMsIGNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlckFuZERpc3BsYXkgYW5kCisgICAgICAgIGNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlciBmcm9tIFJlbmRlck9iamVjdCB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZS4KKyAg
ICAgICAgMi4gY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgb2YgY3JlYXRlKiBmdW5jdGlvbiBmcm9t
IHJhdyBwb2ludGVyIHRvIHN0ZDo6dW5pcXVlX3B0cjw+CisgICAgICAgIDMuIGRlY291cGxlcyBj
cmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyBhbmQgY3JlYXRlQW5vbnltb3VzV2l0aFBh
cmVudFJlbmRlcmVyLgorICAgICAgICBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyBt
aXNsZWFkaW5nbHkgY2FsbHMgY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyCisgICAg
ICAgIHdoaWxlIGl0IGlzIG5ldmVyIHRoZSBwYXJlbnQgaW4gY2FzZSBvZiB0YWJsZSBpdGVtcy4K
KyAgICAgICAgKHN0ZDo6dW5pcXVlX3B0cjo6cmVsZWFzZSgpIHZzLiBXVEZNb3ZlKCkgd2lsbCBi
ZSBhZGRyZXNzZWQgaW4gYSBzZXBhcmF0ZSBwYXRjaCkKKworICAgICAgICBObyBjaGFuZ2UgaW4g
ZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVU
eXBlQXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dp
dGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Js
b2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmFkZENo
aWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6c3BsaXRGbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmFkZENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJl
bmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlUm93OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6Y3JlYXRlVGFibGVSb3dXaXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNl
Y3Rpb246OmNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyk6
CisKIDIwMTYtMDctMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICB0YWJsZSpCb3JkZXJBZGpvaW5pbmdDZWxsIGFuZCBib3JkZXJBZGpvaW5pbmdDZWxsKiBzaG91
bGQgdGFrZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBSZW5kZXJUYWJsZUNlbGwqLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMDM1MmY1OTdmMThiZTUyODhmMjQw
OGEyZmZlOWZjYjRhZTFjZGI4Ni4uNDg3NWQ5NzlhOTZjNWQ3NjA4YTQxYjVlNWM0MTllOTI5NGZk
N2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zNTUw
LDkgKzM1NTAsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICBpbmxpbmVFbGVt
ZW50Q29udGludWF0aW9uKCktPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0
UG9pbnQoTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIGlubGluZUVsZW1lbnRDb250aW51
YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBsb2NhdGlvbigpKSksIHBh
aW50Q29udGFpbmVyKTsKIH0KIAotUmVuZGVyQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0Citz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQm94
V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShwYXJlbnQs
IHN0eWxlKCkuZGlzcGxheSgpKTsKKyAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVu
dFJlbmRlcmVyQW5kRGlzcGxheShyZW5kZXJlciwgc3R5bGUoKS5kaXNwbGF5KCkpOwogfQogCiBM
YXlvdXRVbml0IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkg
Y29uc3QKQEAgLTM4MTUsMTQgKzM4MTUsMTQgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QKICAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0aCks
IHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyT2JqZWN0
KiBwYXJlbnQsIEVEaXNwbGF5IGRpc3BsYXkpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2s+
IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5
KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBFRGlzcGxheSBkaXNwbGF5KQogewogICAgIC8vIEZJ
WE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnZlcnQgYWxsIG91ciBpbmxpbmUgZGlzcGxheXMgdG8gYmxv
Y2stdHlwZSBpbiB0aGUgYW5vbnltb3VzIGxvZ2ljID8KLSAgICBSZW5kZXJCbG9jayogbmV3Qm94
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9jaz4gbmV3Qm94OwogICAgIGlmIChkaXNw
bGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWCkKLSAgICAgICAgbmV3Qm94ID0g
bmV3IFJlbmRlckZsZXhpYmxlQm94KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBGTEVYKSk7Cisg
ICAgICAgIG5ld0JveCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyRmxleGlibGVCb3g+KHBhcmVu
dC5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShwYXJlbnQuc3R5bGUoKSwgRkxFWCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3Qm94ID0gbmV3
IFJlbmRlckJsb2NrRmxvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgQkxPQ0spKTsKKyAgICAg
ICAgbmV3Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudC5kb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJl
bnQuc3R5bGUoKSwgQkxPQ0spKTsKIAogICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAg
ICAgcmV0dXJuIG5ld0JveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggZTFjODc4MWNjNDM3MmQ1MjljYmU4NzkyNzZkYjU2NDk1ZGMwMzYwMy4uZGExM2RmNDIwZTNh
YjgyNzgwYWU1OWU5ZThiYTE0ZGY3YWNiZjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTU3LDExICs1NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFRleHRSdW5G
bGFnczsKIGNsYXNzIFJlbmRlckJsb2NrIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAg
ICAgZnJpZW5kIGNsYXNzIExpbmVMYXlvdXRTdGF0ZTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJCbG9j
aygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQmxvY2soRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYsIEJhc2VUeXBlRmxhZ3MpOwogICAgIFJlbmRlckJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJiwgQmFzZVR5cGVGbGFncyk7Ci0gICAgdmlydHVhbCB+UmVuZGVyQmxvY2soKTsKIAogcHVi
bGljOgogICAgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJyaWRkZW4gZm9yIGlubGlu
ZS1ibG9jay4KQEAgLTE5MiwxMSArMTkyLDExIEBAIHB1YmxpYzoKICAgICB1c2luZyBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29udGludWF0aW9uOwogICAgIHVzaW5nIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzZXRDb250aW51YXRpb247CiAKLSAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGNyZWF0ZUFu
b255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
RURpc3BsYXkgPSBCTE9DSyk7Ci0gICAgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2Nr
KEVEaXNwbGF5IGRpc3BsYXkgPSBCTE9DSykgY29uc3QgeyByZXR1cm4gY3JlYXRlQW5vbnltb3Vz
V2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheSh0aGlzLCBkaXNwbGF5KTsgfQorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyQm94JiBwYXJlbnQsIEVEaXNwbGF5ID0gQkxP
Q0spOworICAgIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNCbG9jayhFRGlzcGxheSBkaXNw
bGF5ID0gQkxPQ0spIGNvbnN0IHsgcmV0dXJuIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5k
ZXJlckFuZERpc3BsYXkoKnRoaXMsIGRpc3BsYXkpLnJlbGVhc2UoKTsgfQogICAgIHN0YXRpYyB2
b2lkIGRyb3BBbm9ueW1vdXNCb3hDaGlsZChSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJCbG9j
ayYgY2hpbGQpOwogCi0gICAgUmVuZGVyQm94KiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5
cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlckJveD4gY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMo
Y29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRTa2lwQ3JlYXRpbmdSdW5zRm9yT2JqZWN0KFJlbmRlck9iamVjdCYgb2JqKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNzg4Y2I1YTRiNjhiMWNjMTc0
ZjNjNjBiZTc5MGVhNDQwNzBjNjFhYy4uMjA5NDAyNjIxMGQ1ZjI4MzUwZWE4NjhhNzk1YTJmYmQz
NTM3NDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTUxMTcs
NyArNTExNyw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyQm94OjpzcGxpdEFub255bW91c0JveGVz
QXJvdW5kQ2hpbGQoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsCiAKICAgICAgICAgICAgIC8vIFdl
IGhhdmUgdG8gc3BsaXQgdGhlIHBhcmVudCBib3ggaW50byB0d28gYm94ZXMgYW5kIG1vdmUgY2hp
bGRyZW4KICAgICAgICAgICAgIC8vIGZyb20gfGJlZm9yZUNoaWxkfCB0byBlbmQgaW50byB0aGUg
bmV3IHBvc3QgYm94LgotICAgICAgICAgICAgUmVuZGVyQm94KiBwb3N0Qm94ID0gYm94VG9TcGxp
dC5jcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyh0aGlzKTsKKyAgICAgICAgICAgIGF1
dG8qIHBvc3RCb3ggPSBib3hUb1NwbGl0LmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFz
KCp0aGlzKS5yZWxlYXNlKCk7CiAgICAgICAgICAgICBwb3N0Qm94LT5zZXRDaGlsZHJlbklubGlu
ZShib3hUb1NwbGl0LmNoaWxkcmVuSW5saW5lKCkpOwogICAgICAgICAgICAgUmVuZGVyQm94KiBw
YXJlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGJveFRvU3BsaXQucGFyZW50KCkpOwogICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSB8cGFyZW50Qm94fCBiZWZvcmUg
aW5zZXJ0aW5nIHRoZSBuZXcgbm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmlu
ZGV4IDk5YTJiYzY0ZTQ4OTQzZDM3ZWVmOWQ0ZGU2YWU5MDMxYzBlNGIxMGUuLjA5ZTUzZjk1MDll
NjViZTI5ZmZhMTY2NjRhODNiMDNkM2UzMDQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKQEAgLTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYXlv
dXRPdmVyZmxvd1JlY3QueSgpIDwgeSgpIHx8IGxheW91dE92ZXJmbG93UmVjdC5tYXhZKCkgPiB5
KCkgKyBsb2dpY2FsSGVpZ2h0KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZW5kZXJCb3gqIGNy
ZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1vdXNC
b3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmKSBjb25zdAogICAgIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGFkZTA4OTJkMWU1NzM2ZTkw
YTY3MmYyM2RhMjNlMTZkNjI0YWUwNzUuLmJmN2NkY2FhOTY3MDM0NDE2YjkyOGU0YWMwYzBiOTQ0
ZDQ0N2Y2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
QEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmFkZENoaWxkKFJlbmRlck9i
amVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiAgICAgICAgIGlmIChh
ZnRlckNoaWxkICYmIGFmdGVyQ2hpbGQtPmlzQW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyVGFibGU+
KCphZnRlckNoaWxkKSAmJiAhYWZ0ZXJDaGlsZC0+aXNCZWZvcmVDb250ZW50KCkpCiAgICAgICAg
ICAgICB0YWJsZSA9IGRvd25jYXN0PFJlbmRlclRhYmxlPihhZnRlckNoaWxkKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICB0YWJsZSA9IFJlbmRlclRhYmxlOjpjcmVhdGVBbm9ueW1vdXNX
aXRoUGFyZW50UmVuZGVyZXIodGhpcyk7CisgICAgICAgICAgICB0YWJsZSA9IFJlbmRlclRhYmxl
OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoKnRoaXMpLnJlbGVhc2UoKTsKICAg
ICAgICAgICAgIGFkZENoaWxkKHRhYmxlLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIH0KICAgICAg
ICAgdGFibGUtPmFkZENoaWxkKG5ld0NoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKaW5kZXggYTliNjBmY2M4YzFhOGNlYmIzNzZhN2FhOTAzMzJkYzkzNWMy
MDYxMC4uZGJiNDgzZDY5ZjI2NjFkMzkwZGY1MWE1ZjhmMTEwYTEwMDViNDcwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTU2Myw3ICs1NjMsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6c3BsaXRGbG93KFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIFJl
bmRlckJsb2NrKiBuZXdCbG9ja0JveAogICAgICAgICBtYWRlTmV3QmVmb3JlQmxvY2sgPSB0cnVl
OwogICAgIH0KIAotICAgIFJlbmRlckJsb2NrJiBwb3N0ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpwcmUtPmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGJsb2NrKSk7CisgICAgYXV0
byYgcG9zdCA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqcHJlLT5jcmVhdGVBbm9ueW1vdXNCb3hX
aXRoU2FtZVR5cGVBcygqYmxvY2spLnJlbGVhc2UoKSk7CiAKICAgICBSZW5kZXJPYmplY3QqIGJv
eEZpcnN0ID0gbWFkZU5ld0JlZm9yZUJsb2NrID8gYmxvY2stPmZpcnN0Q2hpbGQoKSA6IHByZS0+
bmV4dFNpYmxpbmcoKTsKICAgICBpZiAobWFkZU5ld0JlZm9yZUJsb2NrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggZjYzNzYyMzFkNGRhNDNhZDEwZTA4YmM0
MTAxYmMyY2YwZThhYjg3Zi4uMDZhMGIxYjQ5YWI5OTE5ZTgxMzY1MTk1NmI3OTljZTJiOGY3YTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yMTYsOSAr
MjE2LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICBpZiAoYmVmb3JlQ2hpbGQgJiYgIWlzPFJl
bmRlclRhYmxlU2VjdGlvbj4oKmJlZm9yZUNoaWxkKSAmJiBiZWZvcmVDaGlsZC0+c3R5bGUoKS5k
aXNwbGF5KCkgIT0gVEFCTEVfQ0FQVElPTiAmJiBiZWZvcmVDaGlsZC0+c3R5bGUoKS5kaXNwbGF5
KCkgIT0gVEFCTEVfQ09MVU1OX0dST1VQKQogICAgICAgICBiZWZvcmVDaGlsZCA9IG51bGxwdHI7
CiAKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSBSZW5kZXJUYWJsZVNlY3Rpb246
OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcih0aGlzKTsKKyAgICBhdXRvIHNlY3Rp
b24gPSBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJl
cigqdGhpcykucmVsZWFzZSgpOwogICAgIGFkZENoaWxkKHNlY3Rpb24sIGJlZm9yZUNoaWxkKTsK
LSAgICBzZWN0aW9uLT5hZGRDaGlsZChjaGlsZCk7CisgICAgc2VjdGlvbi0+YWRkQ2hpbGQoc2Vj
dGlvbik7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGU6OmFkZENhcHRpb24oY29uc3QgUmVuZGVyVGFi
bGVDYXB0aW9uKiBjYXB0aW9uKQpAQCAtMTU1NSwxMyArMTU1NSwxOCBAQCBib29sIFJlbmRlclRh
YmxlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyVGFibGUqIFJlbmRlclRh
YmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBwYXJlbnQpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGU+IFJlbmRlclRhYmxlOjpjcmVh
dGVUYWJsZVdpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKIHsKLSAgICBhdXRvIHRhYmxlID0gbmV3IFJlbmRlclRhYmxlKHBhcmVudC0+ZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50
LT5zdHlsZSgpLCBwYXJlbnQtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORSA/IElOTElORV9U
QUJMRSA6IFRBQkxFKSk7CisgICAgYXV0byB0YWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGFibGU+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShzdHlsZSwgc3R5bGUuZGlzcGxheSgpID09IElOTElORSA/IElOTElORV9UQUJMRSA6IFRB
QkxFKSk7CiAgICAgdGFibGUtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiB0YWJsZTsK
IH0KIAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxlPiBSZW5kZXJUYWJsZTo6Y3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudCkKK3sK
KyAgICByZXR1cm4gUmVuZGVyVGFibGU6OmNyZWF0ZVRhYmxlV2l0aFN0eWxlKHBhcmVudC5kb2N1
bWVudCgpLCBwYXJlbnQuc3R5bGUoKSk7Cit9CisKIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJU
YWJsZTo6dGFibGVTdGFydEJvcmRlckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxs
JiBjZWxsKSBjb25zdAogewogICAgIEFTU0VSVChjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3co
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IDQ2ODViZGUwYmFk
ODVhNzVkZGQ0ZDNkNWE0Yjc4NGM0ZGIxODM1MjkuLjUxZWQ3M2E1MjY5Zjc5NzlhMzA1OTk1NzA3
NTUwOWJiMDc1YmMxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBA
IC0yNTEsMTEgKzI1MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlY2FsY1NlY3Rpb25zKCk7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlbmRlclRhYmxlKiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgUmVuZGVyQm94KiBjcmVhdGVB
bm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkgY29u
c3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIocGFyZW50KTsKLSAgICB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJUYWJsZT4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1v
dXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5n
Q2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwmKSBjb25zdDsKICAgICBjb25zdCBCb3JkZXJWYWx1
ZSYgdGFibGVFbmRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYpIGNv
bnN0OwpAQCAtMjc3LDYgKzI3NCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNpbXBsaWZpZWRO
b3JtYWxGbG93TGF5b3V0KCkgZmluYWw7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJUYWJsZT4gY3JlYXRlVGFibGVXaXRoU3R5bGUoRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpOworCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUYWJsZSI7IH0KIAogICAgIGJvb2wgaXNUYWJsZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTM3OCw2ICszNzcsMTEgQEAgaW5saW5lIFJl
bmRlclRhYmxlU2VjdGlvbiogUmVuZGVyVGFibGU6OnRvcFNlY3Rpb24oKSBjb25zdAogICAgIHJl
dHVybiBtX2Zvb3Q7CiB9CiAKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBSZW5k
ZXJUYWJsZTo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94
JiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gUmVuZGVyVGFibGU6OmNyZWF0ZVRhYmxl
V2l0aFN0eWxlKHJlbmRlcmVyLmRvY3VtZW50KCksIHJlbmRlcmVyLnN0eWxlKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09C
SkVDVChSZW5kZXJUYWJsZSwgaXNUYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBhNWIzMWZlZDRiZTZjMTdiZGFmMDhjYWY5OTA3ODVh
NDk1Y2FkOGU2Li5jMmJlMjcxMzFhZTE5NDBjOGY0MzBmNjg0NzYwOGRjNzA5MDJiNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTM1Niwx
MSArMTM1NiwxNiBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFyc0NoYW5nZWQoYm9v
bCBob3Jpem9udGFsU2Nyb2xsYmFyQ2hhbmdlZCwgYm9vbCB2ZQogICAgICAgICBzZXRJbnRyaW5z
aWNQYWRkaW5nQWZ0ZXIoaW50cmluc2ljUGFkZGluZ0FmdGVyKCkgLSBzY3JvbGxiYXJIZWlnaHQp
OwogfQogCi1SZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3Vz
V2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KQorc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclRhYmxlQ2VsbD4gUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVUYWJsZUNlbGxX
aXRoU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
Ci0gICAgYXV0byBjZWxsID0gbmV3IFJlbmRlclRhYmxlQ2VsbChwYXJlbnQtPmRvY3VtZW50KCks
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5
bGUoKSwgVEFCTEVfQ0VMTCkpOworICAgIGF1dG8gY2VsbCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGFibGVDZWxsPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoc3R5bGUsIFRBQkxFX0NFTEwpKTsKICAgICBjZWxsLT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gY2VsbDsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxl
Q2VsbD4gUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIo
Y29uc3QgUmVuZGVyVGFibGVSb3cmIHBhcmVudCkKK3sKKyAgICByZXR1cm4gUmVuZGVyVGFibGVD
ZWxsOjpjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUocGFyZW50LmRvY3VtZW50KCksIHBhcmVudC5z
dHlsZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDZmZDQ2YmJiNDJiZDI1ZTEwNGVkMjY4MzI4
M2EzYzhkODQ2YjM0MmMuLmQ3NTdlY2QxMjA2MDMwNjUwYTk1MGUxZGQzMmY3ZWQ3ZTc5MzdkYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTEwOSw4
ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjZWxsV2lkdGhDaGFuZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZWxsV2lkdGhDaGFuZ2VkOyB9CiAgICAgdm9pZCBzZXRDZWxsV2lkdGhDaGFuZ2Vk
KGJvb2wgYiA9IHRydWUpIHsgbV9jZWxsV2lkdGhDaGFuZ2VkID0gYjsgfQogCi0gICAgc3RhdGlj
IFJlbmRlclRhYmxlQ2VsbCogY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCopOwotICAgIFJlbmRlckJveCogY3JlYXRlQW5vbnltb3VzQm94V2l0aFNh
bWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJlbnQpOyB9CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUYWJsZUNlbGw+IGNyZWF0ZUFub255bW91c1dpdGhQ
YXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJUYWJsZVJvdyYpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJCb3g+IGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRl
ckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv
IHVuaWZ5IHdoaWNoIHRhYmxlIHBhcnQncyBzdHlsZSB3ZSB1c2UgZm9yIGNvbXB1dGluZyBkaXJl
Y3Rpb24gYW5kCiAgICAgLy8gd3JpdGluZyBtb2RlLiBXcml0aW5nIG1vZGVzIGFyZSBub3QgYWxs
b3dlZCBvbiByb3cgZ3JvdXAgYW5kIHJvdyBidXQgZGlyZWN0aW9uIGlzLgpAQCAtMTM5LDYgKzEz
OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJUYWJsZUNlbGw+IGNyZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlJik7CisKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRl
clRhYmxlQ2VsbCAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVDZWxsIjsgfQogCiAgICAgYm9v
bCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTM3Miw2
ICszNzQsMTEgQEAgaW5saW5lIHZvaWQgUmVuZGVyVGFibGVDZWxsOjppbnZhbGlkYXRlSGFzRW1w
dHlDb2xsYXBzZWRCb3JkZXJzKCkKICAgICBtX2hhc0VtcHR5Q29sbGFwc2VkRW5kQm9yZGVyID0g
ZmFsc2U7CiB9CiAKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBSZW5kZXJUYWJs
ZUNlbGw6OmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlckJveCYg
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFi
bGVDZWxsV2l0aFN0eWxlKHJlbmRlcmVyLmRvY3VtZW50KCksIHJlbmRlcmVyLnN0eWxlKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJUYWJsZUNlbGwsIGlzVGFibGVDZWxsKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCA2ZTY4MDNmZDk4NTBkM2JhNGIz
OTJlY2VjYzFkN2ZiMmNlZTYwMDEwLi5iNDFiMzczZDlhNmJhMzM3NzJkYzIyZjQyOGZhMTlmMWZh
MzUyNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAK
QEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjphZGRDaGlsZChSZW5kZXJP
YmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gUmVuZGVy
VGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIodGhpcyk7CisgICAg
ICAgIGF1dG8qIGNlbGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlcigqdGhpcykucmVsZWFzZSgpOwogICAgICAgICBhZGRDaGlsZChjZWxsLCBiZWZv
cmVDaGlsZCk7CiAgICAgICAgIGNlbGwtPmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYwLDExICsyNjAsMTYgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgcmVwYWludCgpOwogfQogCi1S
ZW5kZXJUYWJsZVJvdyogUmVuZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKK3N0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJUYWJsZVJvdz4gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gbmV3
Um93ID0gbmV3IFJlbmRlclRhYmxlUm93KHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9S
T1cpKTsKLSAgICBuZXdSb3ctPmluaXRpYWxpemVTdHlsZSgpOwotICAgIHJldHVybiBuZXdSb3c7
CisgICAgYXV0byByb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRhYmxlUm93Pihkb2N1bWVu
dCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIFRB
QkxFX1JPVykpOworICAgIHJvdy0+aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgcmV0dXJuIHJvdzsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxlUm93PiBSZW5kZXJUYWJsZVJvdzo6Y3Jl
YXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiYg
cGFyZW50KQoreworICAgIHJldHVybiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlVGFibGVSb3dXaXRo
U3R5bGUocGFyZW50LmRvY3VtZW50KCksIHBhcmVudC5zdHlsZSgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApp
bmRleCAzMzk5ZTQxYTNhOTA5MDA1M2Y5NDIxM2I3N2FhMGNjYzZlZDAzNTc1Li4xYWZlNmJlYjQ5
ZGYwOGJmYTY4YzA5ZDNkNWQ0ZmY4YjhjNTFiODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuaApAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAKLSAgICBzdGF0aWMgUmVuZGVyVGFibGVSb3cqIGNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKLSAgICBSZW5kZXJCb3gqIGNyZWF0ZUFu
b255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIocGFy
ZW50KTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGVSb3c+IGNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24mKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2Ft
ZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
Um93SW5kZXgodW5zaWduZWQpOwogICAgIGJvb2wgcm93SW5kZXhXYXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Jvd0luZGV4ICE9IHVuc2V0Um93SW5kZXg7IH0KQEAgLTY0LDYgKzY0LDggQEAgcHVi
bGljOgogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
OwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGVSb3c+
IGNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsK
KwogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAo
aXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFibGVSb3cgKGFu
b255bW91cykiIDogIlJlbmRlclRhYmxlUm93IjsgfQogCiAgICAgYm9vbCBpc1RhYmxlUm93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQ5LDYgKzE1MSwxMSBAQCBpbmxp
bmUgUmVuZGVyVGFibGVSb3cqIFJlbmRlclRhYmxlU2VjdGlvbjo6bGFzdFJvdygpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRhYmxlUm93PihSZW5kZXJCb3g6Omxhc3RDaGlsZCgp
KTsKIH0KIAoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3g+IFJlbmRlclRhYmxlUm93
OjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmIHJlbmRl
cmVyKSBjb25zdAoreworICAgIHJldHVybiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlVGFibGVSb3dX
aXRoU3R5bGUocmVuZGVyZXIuZG9jdW1lbnQoKSwgcmVuZGVyZXIuc3R5bGUoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JK
RUNUKFJlbmRlclRhYmxlUm93LCBpc1RhYmxlUm93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDRmODZlNGIwZWM4NTU2M2VjMjJl
ZmU0MWE2NTY5N2Y3MzE0ZTg4M2QuLmU0NWE1MThkY2RkMDQ1ZDY0YmI2ODNkOWVkMDdjYjU1ZTE5
ZDNlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlclRhYmxlUm93KiByb3cg
PSBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHRoaXMp
OworICAgICAgICBhdXRvKiByb3cgPSBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKCp0aGlzKS5yZWxlYXNlKCk7CiAgICAgICAgIGFkZENoaWxkKHJvdywg
YmVmb3JlQ2hpbGQpOwogICAgICAgICByb3ctPmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTU3NywxMyArMTU3NywxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZVNlY3Rpb246OmNhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZQogICAg
IHJldHVybiBpdC0+dmFsdWU7CiB9CiAKLVJlbmRlclRhYmxlU2VjdGlvbiogUmVuZGVyVGFibGVT
ZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwYXJlbnQpCitzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGVTZWN0aW9uPiBSZW5kZXJU
YWJsZVNlY3Rpb246OmNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHNlY3Rpb24gPSBuZXcg
UmVuZGVyVGFibGVTZWN0aW9uKHBhcmVudC0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9ST1dfR1JP
VVApKTsKKyAgICBhdXRvIHNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRhYmxlU2Vj
dGlvbj4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHN0eWxlLCBUQUJMRV9ST1dfR1JPVVApKTsKICAgICBzZWN0aW9uLT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gc2VjdGlvbjsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRh
YmxlU2VjdGlvbj4gUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50
UmVuZGVyZXIoY29uc3QgUmVuZGVyVGFibGUmIHBhcmVudCkKK3sKKyAgICByZXR1cm4gUmVuZGVy
VGFibGVTZWN0aW9uOjpjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUocGFyZW50LmRvY3VtZW50
KCksIHBhcmVudC5zdHlsZSgpKTsKK30KKwogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnNldExv
Z2ljYWxQb3NpdGlvbkZvckNlbGwoUmVuZGVyVGFibGVDZWxsKiBjZWxsLCB1bnNpZ25lZCBlZmZl
Y3RpdmVDb2x1bW4pIGNvbnN0CiB7CiAgICAgTGF5b3V0UG9pbnQgb2xkQ2VsbExvY2F0aW9uID0g
Y2VsbC0+bG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaAppbmRleCAzYjc3N2Y1ZmNiZGNhZjVkMWNmZWFkODc2NWJlOWRlY2QzYzc0M2Zj
Li4xMzE5MDEyNTcwMjlhNDY3MWRmYzRiZjkxZDFhYzRhMjA3OWY4OTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC0xNDMsOCArMTQzLDgg
QEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBpbnRyb2R1Y2UgYSBzdHJ1
Y3R1cmUgaG9sZGluZyB0aGUgaW4tZmx1eCBsYXlvdXQgaW5mb3JtYXRpb24uCiAgICAgTGF5b3V0
VW5pdCBkaXN0cmlidXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9Sb3dzKExheW91dFVuaXQgZXh0cmFM
b2dpY2FsSGVpZ2h0KTsKIAotICAgIHN0YXRpYyBSZW5kZXJUYWJsZVNlY3Rpb24qIGNyZWF0ZUFu
b255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKLSAgICBSZW5k
ZXJCb3gqIGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlck9iamVj
dCogcGFyZW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIocGFyZW50KTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
VGFibGVTZWN0aW9uPiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVu
ZGVyVGFibGUmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1v
dXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmKSBjb25zdCBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGU7CiAKQEAgLTE1Miw2ICsxNTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUYWJsZVNl
Y3Rpb24+IGNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlJik7CisKICAgICBlbnVtIFNob3VsZEluY2x1ZGVBbGxJbnRlcnNlY3RpbmdDZWxscyB7
CiAgICAgICAgIEluY2x1ZGVBbGxJbnRlcnNlY3RpbmdDZWxscywKICAgICAgICAgRG9Ob3RJbmNs
dWRlQWxsSW50ZXJzZWN0aW5nQ2VsbHMKQEAgLTMzMSw2ICszMzMsMTEgQEAgaW5saW5lIENlbGxT
cGFuIFJlbmRlclRhYmxlU2VjdGlvbjo6ZnVsbFRhYmxlUm93U3BhbigpIGNvbnN0CiAgICAgcmV0
dXJuIENlbGxTcGFuKDAsIG1fZ3JpZC5zaXplKCkpOwogfQogCitpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJveD4gUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRo
U2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKSBjb25zdAoreworICAgIHJldHVy
biBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHlsZShyZW5kZXJl
ci5kb2N1bWVudCgpLCByZW5kZXJlci5zdHlsZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGFibGVT
ZWN0aW9uLCBpc1RhYmxlU2VjdGlvbigpKQo=
</data>
<flag name="review"
          id="308167"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284559</attachid>
            <date>2016-07-25 18:54:02 -0700</date>
            <delta_ts>2016-07-25 19:41:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160175-20160725185254.patch</filename>
            <type>text/plain</type>
            <size>25965</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZkOGE5ZTAzZDA2MjZh
OGU3NzMwZDgyM2M5YmIyMzQ4NjRkYzI0My4uMzc3MzcyYTRjNmRhM2EwY2UyNDRhNDFhOGUxOGUy
NzgzMzI4MjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTA3LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBSZW5kZXJUYWJs
ZSo6OmNyZWF0ZUFub255bW91cyoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MDE3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBUaGlzIHBhdGNoCisgICAgICAgIDEuIHRpZ2h0ZW5zIHRoZSB0eXBlIG9uIGNy
ZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzLCBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50
UmVuZGVyZXJBbmREaXNwbGF5IGFuZAorICAgICAgICBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50
UmVuZGVyZXIgZnJvbSBSZW5kZXJPYmplY3QgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUuCisgICAg
ICAgIDIuIGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIGNyZWF0ZSogZnVuY3Rpb24gZnJvbSBy
YXcgcG9pbnRlciB0byBzdGQ6OnVuaXF1ZV9wdHI8PgorICAgICAgICAzLiBkZWNvdXBsZXMgY3Jl
YXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMgYW5kIGNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlci4KKyAgICAgICAgY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMgbWlz
bGVhZGluZ2x5IGNhbGxzIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcgorICAgICAg
ICB3aGlsZSBpdCBpcyBuZXZlciB0aGUgcGFyZW50IGluIGNhc2Ugb2YgdGFibGUgaXRlbXMuCisg
ICAgICAgIChzdGQ6OnVuaXF1ZV9wdHI6OnJlbGVhc2UoKSB2cy4gV1RGTW92ZSgpIHdpbGwgYmUg
YWRkcmVzc2VkIGluIGEgc2VwYXJhdGUgcGF0Y2gpCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlw
ZUFzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9j
ayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmxheW91dE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNy
ZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjphZGRDaGls
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OnNwbGl0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y3JlYXRlVGFibGVXaXRoU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5k
ZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZTo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVSb3c6OmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0
aW9uOjpjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMpOgor
CiAyMDE2LTA3LTIzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
dGFibGUqQm9yZGVyQWRqb2luaW5nQ2VsbCBhbmQgYm9yZGVyQWRqb2luaW5nQ2VsbCogc2hvdWxk
IHRha2UgcmVmZXJlbmNlIGluc3RlYWQgb2YgUmVuZGVyVGFibGVDZWxsKi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDAzNTJmNTk3ZjE4YmU1Mjg4ZjI0MDhh
MmZmZTlmY2I0YWUxY2RiODYuLmNkZTYwN2NmNWFjZjFhZmY5NWZhNjBjODI1ZmFhZTBhZmZkNzkx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzU1MCw5
ICszNTUwLDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIGlubGluZUVsZW1l
bnRDb250aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQ
b2ludChMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zmc2V0ICsgaW5saW5lRWxlbWVudENvbnRpbnVh
dGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGxvY2F0aW9uKCkpKSwgcGFp
bnRDb250YWluZXIpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1v
dXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Js
b2NrV2l0aFN0eWxlQW5kRGlzcGxheShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgRURpc3BsYXkgZGlzcGxheSkKIHsKLSAgICByZXR1cm4gY3JlYXRlQW5vbnlt
b3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShwYXJlbnQsIHN0eWxlKCkuZGlzcGxheSgp
KTsKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb252ZXJ0IGFsbCBvdXIgaW5saW5lIGRp
c3BsYXlzIHRvIGJsb2NrLXR5cGUgaW4gdGhlIGFub255bW91cyBsb2dpYyA/CisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckJsb2NrPiBuZXdCb3g7CisgICAgaWYgKGRpc3BsYXkgPT0gRkxFWCB8
fCBkaXNwbGF5ID09IElOTElORV9GTEVYKQorICAgICAgICBuZXdCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckZsZXhpYmxlQm94Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIEZMRVgpKTsKKyAgICBlbHNlCisgICAgICAgIG5l
d0JveCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tGbG93Pihkb2N1bWVudCwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIEJMT0NLKSk7Cisg
ICAgCisgICAgbmV3Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKKyAgICByZXR1cm4gbmV3Qm94Owog
fQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgY29uc3QKQEAgLTM4MTUsMTkgKzM4MjMsNiBAQCBUZXh0UnVuIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25z
dAogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVu
Z3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKLVJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6
Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJP
YmplY3QqIHBhcmVudCwgRURpc3BsYXkgZGlzcGxheSkKLXsKLSAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCB0byBjb252ZXJ0IGFsbCBvdXIgaW5saW5lIGRpc3BsYXlzIHRvIGJsb2NrLXR5cGUgaW4g
dGhlIGFub255bW91cyBsb2dpYyA/Ci0gICAgUmVuZGVyQmxvY2sqIG5ld0JveDsKLSAgICBpZiAo
ZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgpCi0gICAgICAgIG5ld0Jv
eCA9IG5ldyBSZW5kZXJGbGV4aWJsZUJveChwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgRkxFWCkp
OwotICAgIGVsc2UKLSAgICAgICAgbmV3Qm94ID0gbmV3IFJlbmRlckJsb2NrRmxvdyhwYXJlbnQt
PmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHBhcmVudC0+c3R5bGUoKSwgQkxPQ0spKTsKLQotICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxl
KCk7Ci0gICAgcmV0dXJuIG5ld0JveDsKLX0KLQogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVuZGVy
QmxvY2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZTFjODc4MWNjNDM3MmQ1MjljYmU4NzkyNzZk
YjU2NDk1ZGMwMzYwMy4uMzE1MjIzNTU1MTE0YmEyOThlZjg5MmE1YzBjZmI1ZTc1Y2MzOGJlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTU3LDExICs1NywxMSBA
QCB0eXBlZGVmIHVuc2lnbmVkIFRleHRSdW5GbGFnczsKIGNsYXNzIFJlbmRlckJsb2NrIDogcHVi
bGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIExpbmVMYXlvdXRTdGF0
ZTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
QmxvY2soRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwogICAgIFJlbmRl
ckJsb2NrKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7Ci0gICAgdmly
dHVhbCB+UmVuZGVyQmxvY2soKTsKIAogcHVibGljOgogICAgIC8vIFRoZXNlIHR3byBmdW5jdGlv
bnMgYXJlIG92ZXJyaWRkZW4gZm9yIGlubGluZS1ibG9jay4KQEAgLTE5MiwxMSArMTkyLDExIEBA
IHB1YmxpYzoKICAgICB1c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29udGludWF0aW9uOwog
ICAgIHVzaW5nIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzZXRDb250aW51YXRpb247CiAKLSAgICBz
dGF0aWMgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERp
c3BsYXkoY29uc3QgUmVuZGVyT2JqZWN0KiwgRURpc3BsYXkgPSBCTE9DSyk7Ci0gICAgUmVuZGVy
QmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2NrKEVEaXNwbGF5IGRpc3BsYXkgPSBCTE9DSykgY29u
c3QgeyByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheSh0
aGlzLCBkaXNwbGF5KTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2s+
IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVy
Qm94JiBwYXJlbnQsIEVEaXNwbGF5ID0gQkxPQ0spOworICAgIFJlbmRlckJsb2NrKiBjcmVhdGVB
bm9ueW1vdXNCbG9jayhFRGlzcGxheSA9IEJMT0NLKSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBk
cm9wQW5vbnltb3VzQm94Q2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyQmxvY2smIGNo
aWxkKTsKIAotICAgIFJlbmRlckJveCogY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMo
Y29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJCb3g+IGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0
IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU2tp
cENyZWF0aW5nUnVuc0Zvck9iamVjdChSZW5kZXJPYmplY3QmIG9iaikKICAgICB7CkBAIC0zOTIs
NiArMzkyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJlcGFyZVBhZ2luYXRpb25CZWZvcmVC
bG9ja0xheW91dChib29sJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KERv
Y3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBFRGlzcGxheSk7CisKICAgICAvLyBGSVhNRS1C
TE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3Zl
ZCB0byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbG9naWNhbFJpZ2h0
RmxvYXRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExh
eW91dFVuaXQpIGNvbnN0IHsgcmV0dXJuIGZpeGVkT2Zmc2V0OyB9OwogICAgIC8vIEZJWE1FLUJM
T0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVk
IHRvIFJlbmRlckJsb2NrRmxvdwpAQCAtNTE4LDYgKzUyMCwyMSBAQCBMYXlvdXRVbml0IGJsb2Nr
RGlyZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFNpemUm
IG9mZnNldAogTGF5b3V0VW5pdCBpbmxpbmVEaXJlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2smIHJv
b3RCbG9jaywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jayk7CiBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5k
ZXJCbG9jayYsIFJlbmRlckJveCYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKK2lubGluZSBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBFRGlzcGxh
eSBkaXNwbGF5KQoreworICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFu
ZERpc3BsYXkocGFyZW50LmRvY3VtZW50KCksIHBhcmVudC5zdHlsZSgpLCBkaXNwbGF5KTsKK30K
KworaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3g+IFJlbmRlckJsb2NrOjpjcmVhdGVB
bm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKSBjb25z
dAoreworICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXko
ZG9jdW1lbnQoKSwgcmVuZGVyZXIuc3R5bGUoKSwgc3R5bGUoKS5kaXNwbGF5KCkpOworfQorCitp
bmxpbmUgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9jayhFRGlz
cGxheSBkaXNwbGF5KSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dp
dGhTdHlsZUFuZERpc3BsYXkoZG9jdW1lbnQoKSwgc3R5bGUoKSwgZGlzcGxheSkucmVsZWFzZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
UkVOREVSX09CSkVDVChSZW5kZXJCbG9jaywgaXNSZW5kZXJCbG9jaygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA3ODhjYjVhNGI2OGIxY2MxNzRmM2M2MGJlNzkw
ZWE0NDA3MGM2MWFjLi4yMDk0MDI2MjEwZDVmMjgzNTBlYTg2OGE3OTVhMmZiZDM1Mzc0M2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNTExNyw3ICs1MTE3LDcg
QEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnNwbGl0QW5vbnltb3VzQm94ZXNBcm91bmRDaGls
ZChSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWwKIAogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBz
cGxpdCB0aGUgcGFyZW50IGJveCBpbnRvIHR3byBib3hlcyBhbmQgbW92ZSBjaGlsZHJlbgogICAg
ICAgICAgICAgLy8gZnJvbSB8YmVmb3JlQ2hpbGR8IHRvIGVuZCBpbnRvIHRoZSBuZXcgcG9zdCBi
b3guCi0gICAgICAgICAgICBSZW5kZXJCb3gqIHBvc3RCb3ggPSBib3hUb1NwbGl0LmNyZWF0ZUFu
b255bW91c0JveFdpdGhTYW1lVHlwZUFzKHRoaXMpOworICAgICAgICAgICAgYXV0byogcG9zdEJv
eCA9IGJveFRvU3BsaXQuY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoKnRoaXMpLnJl
bGVhc2UoKTsKICAgICAgICAgICAgIHBvc3RCb3gtPnNldENoaWxkcmVuSW5saW5lKGJveFRvU3Bs
aXQuY2hpbGRyZW5JbmxpbmUoKSk7CiAgICAgICAgICAgICBSZW5kZXJCb3gqIHBhcmVudEJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oYm94VG9TcGxpdC5wYXJlbnQoKSk7CiAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHxwYXJlbnRCb3h8IGJlZm9yZSBpbnNlcnRpbmcg
dGhlIG5ldyBub2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggOTlhMmJj
NjRlNDg5NDNkMzdlZWY5ZDRkZTZhZTkwMzFjMGU0YjEwZS4uMDllNTNmOTUwOWU2NWJlMjlmZmEx
NjY2NGE4M2IwM2QzZTMwNDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApA
QCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxheW91dE92ZXJmbG93
UmVjdC55KCkgPCB5KCkgfHwgbGF5b3V0T3ZlcmZsb3dSZWN0Lm1heFkoKSA+IHkoKSArIGxvZ2lj
YWxIZWlnaHQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJveCogY3JlYXRlQW5vbnlt
b3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3g+IGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1l
VHlwZUFzKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYWRlMDg5MmQxZTU3MzZlOTBhNjcyZjIzZGEy
M2UxNmQ2MjRhZTA3NS4uYmY3Y2RjYWE5NjcwMzQ0MTZiOTI4ZTRhYzBjMGI5NDRkNDQ3ZjYyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNDkyLDcg
KzQ5Miw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdD
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICAgICAgaWYgKGFmdGVyQ2hpbGQg
JiYgYWZ0ZXJDaGlsZC0+aXNBbm9ueW1vdXMoKSAmJiBpczxSZW5kZXJUYWJsZT4oKmFmdGVyQ2hp
bGQpICYmICFhZnRlckNoaWxkLT5pc0JlZm9yZUNvbnRlbnQoKSkKICAgICAgICAgICAgIHRhYmxl
ID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+KGFmdGVyQ2hpbGQpOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHRhYmxlID0gUmVuZGVyVGFibGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlcih0aGlzKTsKKyAgICAgICAgICAgIHRhYmxlID0gUmVuZGVyVGFibGU6OmNyZWF0ZUFu
b255bW91c1dpdGhQYXJlbnRSZW5kZXJlcigqdGhpcykucmVsZWFzZSgpOwogICAgICAgICAgICAg
YWRkQ2hpbGQodGFibGUsIGJlZm9yZUNoaWxkKTsKICAgICAgICAgfQogICAgICAgICB0YWJsZS0+
YWRkQ2hpbGQobmV3Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCBhOWI2MGZjYzhjMWE4Y2ViYjM3NmE3YWE5MDMzMmRjOTM1YzIwNjEwLi5kYmI0
ODNkNjlmMjY2MWQzOTBkZjUxYTVmOGYxMTBhMTAwNWI0NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpzcGxpdEZsb3coUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgUmVuZGVyQmxvY2sq
IG5ld0Jsb2NrQm94CiAgICAgICAgIG1hZGVOZXdCZWZvcmVCbG9jayA9IHRydWU7CiAgICAgfQog
Ci0gICAgUmVuZGVyQmxvY2smIHBvc3QgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnByZS0+Y3Jl
YXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoYmxvY2spKTsKKyAgICBhdXRvJiBwb3N0ID0g
ZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpwcmUtPmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlw
ZUFzKCpibG9jaykucmVsZWFzZSgpKTsKIAogICAgIFJlbmRlck9iamVjdCogYm94Rmlyc3QgPSBt
YWRlTmV3QmVmb3JlQmxvY2sgPyBibG9jay0+Zmlyc3RDaGlsZCgpIDogcHJlLT5uZXh0U2libGlu
ZygpOwogICAgIGlmIChtYWRlTmV3QmVmb3JlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAppbmRleCBmNjM3NjIzMWQ0ZGE0M2FkMTBlMDhiYzQxMDFiYzJjZjBl
OGFiODdmLi5iZTQxMzBhZjVjMWJmYzk0NWIyZTQyMjBkMjRkMmY5YWFiZGE2NzExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIFJlbmRlclRhYmxlOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKQogICAgIGlmIChiZWZvcmVDaGlsZCAmJiAhaXM8UmVuZGVyVGFibGVT
ZWN0aW9uPigqYmVmb3JlQ2hpbGQpICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAh
PSBUQUJMRV9DQVBUSU9OICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJM
RV9DT0xVTU5fR1JPVVApCiAgICAgICAgIGJlZm9yZUNoaWxkID0gbnVsbHB0cjsKIAotICAgIFJl
bmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IFJlbmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHRoaXMpOworICAgIGF1dG8gc2VjdGlvbiA9IFJlbmRl
clRhYmxlU2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKCp0aGlzKS5y
ZWxlYXNlKCk7CiAgICAgYWRkQ2hpbGQoc2VjdGlvbiwgYmVmb3JlQ2hpbGQpOwogICAgIHNlY3Rp
b24tPmFkZENoaWxkKGNoaWxkKTsKIH0KQEAgLTE1NTUsMTMgKzE1NTUsMTggQEAgYm9vbCBSZW5k
ZXJUYWJsZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclRhYmxlKiBSZW5k
ZXJUYWJsZTo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCogcGFyZW50KQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxlPiBSZW5kZXJUYWJsZTo6
Y3JlYXRlVGFibGVXaXRoU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiB7Ci0gICAgYXV0byB0YWJsZSA9IG5ldyBSZW5kZXJUYWJsZShwYXJlbnQtPmRv
Y3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBh
cmVudC0+c3R5bGUoKSwgcGFyZW50LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUgPyBJTkxJ
TkVfVEFCTEUgOiBUQUJMRSkpOworICAgIGF1dG8gdGFibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRhYmxlPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkoc3R5bGUsIHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUgPyBJTkxJTkVfVEFCTEUg
OiBUQUJMRSkpOwogICAgIHRhYmxlLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gdGFi
bGU7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUYWJsZT4gUmVuZGVyVGFibGU6OmNyZWF0
ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnQp
Cit7CisgICAgcmV0dXJuIFJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZShwYXJlbnQu
ZG9jdW1lbnQoKSwgcGFyZW50LnN0eWxlKCkpOworfQorCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVu
ZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxl
Q2VsbCYgY2VsbCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2VsbC5pc0ZpcnN0T3JMYXN0Q2VsbElu
Um93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCA0Njg1YmRl
MGJhZDg1YTc1ZGRkNGQzZDVhNGI3ODRjNGRiMTgzNTI5Li41MWVkNzNhNTI2OWY3OTc5YTMwNTk5
NTcwNzU1MDliYjA3NWJjMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
aApAQCAtMjUxLDExICsyNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWNhbGNTZWN0aW9u
cygpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZW5kZXJUYWJsZSogY3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwotICAgIFJlbmRlckJveCogY3Jl
YXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQp
IGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7Ci0gICAgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyVGFibGU+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBS
ZW5kZXJFbGVtZW50Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveD4gY3JlYXRlQW5v
bnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgdGFibGVTdGFydEJvcmRlckFkam9p
bmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsJikgY29uc3Q7CiAgICAgY29uc3QgQm9yZGVy
VmFsdWUmIHRhYmxlRW5kQm9yZGVyQWRqb2luaW5nQ2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwm
KSBjb25zdDsKQEAgLTI3Nyw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaW1wbGlm
aWVkTm9ybWFsRmxvd0xheW91dCgpIGZpbmFsOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGU+IGNyZWF0ZVRhYmxlV2l0aFN0eWxlKERvY3VtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmKTsKKwogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGFibGUiOyB9CiAKICAgICBib29sIGlzVGFibGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC0zNzgsNiArMzc3LDExIEBAIGlubGlu
ZSBSZW5kZXJUYWJsZVNlY3Rpb24qIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gbV9mb290OwogfQogCitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveD4g
UmVuZGVyVGFibGU6OmNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRl
ckJveCYgcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlbmRlclRhYmxlOjpjcmVhdGVU
YWJsZVdpdGhTdHlsZShyZW5kZXJlci5kb2N1bWVudCgpLCByZW5kZXJlci5zdHlsZSgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRF
Ul9PQkpFQ1QoUmVuZGVyVGFibGUsIGlzVGFibGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYTViMzFmZWQ0YmU2YzE3YmRhZjA4Y2FmOTkw
Nzg1YTQ5NWNhZDhlNi4uYzJiZTI3MTMxYWUxOTQwYzhmNDMwZjY4NDc2MDhkYzcwOTAyYjQzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEz
NTYsMTEgKzEzNTYsMTYgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNjcm9sbGJhcnNDaGFuZ2Vk
KGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckNoYW5nZWQsIGJvb2wgdmUKICAgICAgICAgc2V0SW50
cmluc2ljUGFkZGluZ0FmdGVyKGludHJpbnNpY1BhZGRpbmdBZnRlcigpIC0gc2Nyb2xsYmFySGVp
Z2h0KTsKIH0KIAotUmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255
bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKK3N0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJUYWJsZUNlbGw+IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVD
ZWxsV2l0aFN0eWxlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewotICAgIGF1dG8gY2VsbCA9IG5ldyBSZW5kZXJUYWJsZUNlbGwocGFyZW50LT5kb2N1bWVu
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQt
PnN0eWxlKCksIFRBQkxFX0NFTEwpKTsKKyAgICBhdXRvIGNlbGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRhYmxlQ2VsbD4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBUQUJMRV9DRUxMKSk7CiAgICAgY2VsbC0+aW5pdGlhbGl6
ZVN0eWxlKCk7CiAgICAgcmV0dXJuIGNlbGw7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJU
YWJsZUNlbGw+IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyKGNvbnN0IFJlbmRlclRhYmxlUm93JiBwYXJlbnQpCit7CisgICAgcmV0dXJuIFJlbmRlclRh
YmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKHBhcmVudC5kb2N1bWVudCgpLCBwYXJl
bnQuc3R5bGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCA2ZmQ0NmJiYjQyYmQyNWUxMDRlZDI2
ODMyODNhM2M4ZDg0NmIzNDJjLi5kNzU3ZWNkMTIwNjAzMDY1MGE5NTBlMWRkMzJmN2VkN2U3OTM3
ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0x
MDksOCArMTA5LDggQEAgcHVibGljOgogICAgIGJvb2wgY2VsbFdpZHRoQ2hhbmdlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2VsbFdpZHRoQ2hhbmdlZDsgfQogICAgIHZvaWQgc2V0Q2VsbFdpZHRoQ2hh
bmdlZChib29sIGIgPSB0cnVlKSB7IG1fY2VsbFdpZHRoQ2hhbmdlZCA9IGI7IH0KIAotICAgIHN0
YXRpYyBSZW5kZXJUYWJsZUNlbGwqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihj
b25zdCBSZW5kZXJPYmplY3QqKTsKLSAgICBSZW5kZXJCb3gqIGNyZWF0ZUFub255bW91c0JveFdp
dGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIocGFyZW50KTsgfQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFibGVDZWxsPiBjcmVhdGVBbm9ueW1vdXNX
aXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyVGFibGVSb3cmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBS
ZW5kZXJCb3gmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNl
ZCB0byB1bmlmeSB3aGljaCB0YWJsZSBwYXJ0J3Mgc3R5bGUgd2UgdXNlIGZvciBjb21wdXRpbmcg
ZGlyZWN0aW9uIGFuZAogICAgIC8vIHdyaXRpbmcgbW9kZS4gV3JpdGluZyBtb2RlcyBhcmUgbm90
IGFsbG93ZWQgb24gcm93IGdyb3VwIGFuZCByb3cgYnV0IGRpcmVjdGlvbiBpcy4KQEAgLTEzOSw2
ICsxMzksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyVGFibGVDZWxsPiBjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUoRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpOworCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJS
ZW5kZXJUYWJsZUNlbGwgKGFub255bW91cykiIDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KIAogICAg
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC0z
NzIsNiArMzc0LDExIEBAIGlubGluZSB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6aW52YWxpZGF0ZUhh
c0VtcHR5Q29sbGFwc2VkQm9yZGVycygpCiAgICAgbV9oYXNFbXB0eUNvbGxhcHNlZEVuZEJvcmRl
ciA9IGZhbHNlOwogfQogCitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveD4gUmVuZGVy
VGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyKSBjb25zdAoreworICAgIHJldHVybiBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0
ZVRhYmxlQ2VsbFdpdGhTdHlsZShyZW5kZXJlci5kb2N1bWVudCgpLCByZW5kZXJlci5zdHlsZSgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1JFTkRFUl9PQkpFQ1QoUmVuZGVyVGFibGVDZWxsLCBpc1RhYmxlQ2VsbCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggNmU2ODAzZmQ5ODUwZDNi
YTRiMzkyZWNlY2MxZDdmYjJjZWU2MDAxMC4uYjQxYjM3M2Q5YTZiYTMzNzcyZGMyMmY0MjhmYTE5
ZjFmYTM1Mjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IFJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHRoaXMpOwor
ICAgICAgICBhdXRvKiBjZWxsID0gUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXIoKnRoaXMpLnJlbGVhc2UoKTsKICAgICAgICAgYWRkQ2hpbGQoY2VsbCwg
YmVmb3JlQ2hpbGQpOwogICAgICAgICBjZWxsLT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI2MCwxMSArMjYwLDE2IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmltYWdlQ2hh
bmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKQogICAgIHJlcGFpbnQoKTsKIH0K
IAotUmVuZGVyVGFibGVSb3cqIFJlbmRlclRhYmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCitzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyVGFibGVSb3c+IFJlbmRlclRhYmxlUm93OjpjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRv
IG5ld1JvdyA9IG5ldyBSZW5kZXJUYWJsZVJvdyhwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFC
TEVfUk9XKSk7Ci0gICAgbmV3Um93LT5pbml0aWFsaXplU3R5bGUoKTsKLSAgICByZXR1cm4gbmV3
Um93OworICAgIGF1dG8gcm93ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUYWJsZVJvdz4oZG9j
dW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxl
LCBUQUJMRV9ST1cpKTsKKyAgICByb3ctPmluaXRpYWxpemVTdHlsZSgpOworICAgIHJldHVybiBy
b3c7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUYWJsZVJvdz4gUmVuZGVyVGFibGVSb3c6
OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJUYWJsZVNlY3Rp
b24mIHBhcmVudCkKK3sKKyAgICByZXR1cm4gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93
V2l0aFN0eWxlKHBhcmVudC5kb2N1bWVudCgpLCBwYXJlbnQuc3R5bGUoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmgKaW5kZXggMzM5OWU0MWEzYTkwOTAwNTNmOTQyMTNiNzdhYTBjY2M2ZWQwMzU3NS4uMWFmZTZi
ZWI0OWRmMDhiZmE2OGMwOWQzZDVkNGZmOGI4YzUxYjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBwYWludE91dGxpbmVGb3JSb3dJZk5lZWRlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpOwogCi0gICAgc3RhdGljIFJlbmRlclRhYmxlUm93KiBjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgUmVuZGVyQm94KiBjcmVh
dGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVy
KHBhcmVudCk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxlUm93PiBj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyVGFibGVTZWN0aW9u
Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveD4gY3JlYXRlQW5vbnltb3VzQm94V2l0
aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHNldFJvd0luZGV4KHVuc2lnbmVkKTsKICAgICBib29sIHJvd0luZGV4V2FzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9yb3dJbmRleCAhPSB1bnNldFJvd0luZGV4OyB9CkBAIC02NCw2ICs2NCw4IEBA
IHB1YmxpYzoKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxl
Um93PiBjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxl
Jik7CisKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93
IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KIAogICAgIGJvb2wgaXNUYWJsZVJv
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE0OSw2ICsxNTEsMTEgQEAg
aW5saW5lIFJlbmRlclRhYmxlUm93KiBSZW5kZXJUYWJsZVNlY3Rpb246Omxhc3RSb3coKSBjb25z
dAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUYWJsZVJvdz4oUmVuZGVyQm94OjpsYXN0Q2hp
bGQoKSk7CiB9CiAKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94PiBSZW5kZXJUYWJs
ZVJvdzo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxl
Um93V2l0aFN0eWxlKHJlbmRlcmVyLmRvY3VtZW50KCksIHJlbmRlcmVyLnN0eWxlKCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVS
X09CSkVDVChSZW5kZXJUYWJsZVJvdywgaXNUYWJsZVJvdygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCA0Zjg2ZTRiMGVjODU1NjNl
YzIyZWZlNDFhNjU2OTdmNzMxNGU4ODNkLi5lNDVhNTE4ZGNkZDA0NWQ2NGJiNjgzZDllZDA3Y2I1
NWUxOWQzZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjph
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJUYWJsZVJvdyog
cm93ID0gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcih0
aGlzKTsKKyAgICAgICAgYXV0byogcm93ID0gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZUFub255bW91
c1dpdGhQYXJlbnRSZW5kZXJlcigqdGhpcykucmVsZWFzZSgpOwogICAgICAgICBhZGRDaGlsZChy
b3csIGJlZm9yZUNoaWxkKTsKICAgICAgICAgcm93LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE1NzcsMTMgKzE1NzcsMTggQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVu
ZGVyVGFibGVTZWN0aW9uOjpjYWNoZWRDb2xsYXBzZWRCb3JkZXIoY29uc3QgUmVuZGVyVGFibGUK
ICAgICByZXR1cm4gaXQtPnZhbHVlOwogfQogCi1SZW5kZXJUYWJsZVNlY3Rpb24qIFJlbmRlclRh
YmxlU2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogcGFyZW50KQorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRhYmxlU2VjdGlvbj4gUmVu
ZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byBzZWN0aW9uID0g
bmV3IFJlbmRlclRhYmxlU2VjdGlvbihwYXJlbnQtPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9X
X0dST1VQKSk7CisgICAgYXV0byBzZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUYWJs
ZVNlY3Rpb24+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShzdHlsZSwgVEFCTEVfUk9XX0dST1VQKSk7CiAgICAgc2VjdGlvbi0+aW5pdGlhbGl6
ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHNlY3Rpb247CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJUYWJsZVNlY3Rpb24+IFJlbmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBh
cmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlclRhYmxlJiBwYXJlbnQpCit7CisgICAgcmV0dXJuIFJl
bmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKHBhcmVudC5kb2N1
bWVudCgpLCBwYXJlbnQuc3R5bGUoKSk7Cit9CisKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpz
ZXRMb2dpY2FsUG9zaXRpb25Gb3JDZWxsKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgdW5zaWduZWQg
ZWZmZWN0aXZlQ29sdW1uKSBjb25zdAogewogICAgIExheW91dFBvaW50IG9sZENlbGxMb2NhdGlv
biA9IGNlbGwtPmxvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmgKaW5kZXggM2I3NzdmNWZjYmRjYWY1ZDFjZmVhZDg3NjViZTlkZWNkM2M3
NDNmYy4uMTMxOTAxMjU3MDI5YTQ2NzFkZmM0YmY5MWQxYWM0YTIwNzlmODkyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtMTQzLDggKzE0
Myw4IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gaW50cm9kdWNlIGEg
c3RydWN0dXJlIGhvbGRpbmcgdGhlIGluLWZsdXggbGF5b3V0IGluZm9ybWF0aW9uLgogICAgIExh
eW91dFVuaXQgZGlzdHJpYnV0ZUV4dHJhTG9naWNhbEhlaWdodFRvUm93cyhMYXlvdXRVbml0IGV4
dHJhTG9naWNhbEhlaWdodCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyVGFibGVTZWN0aW9uKiBjcmVh
dGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAg
UmVuZGVyQm94KiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJP
YmplY3QqIHBhcmVudCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclRhYmxlU2VjdGlvbj4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0
IFJlbmRlclRhYmxlJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveD4gY3JlYXRlQW5v
bnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOwogCkBAIC0xNTIsNiArMTUyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGFi
bGVTZWN0aW9uPiBjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUoRG9jdW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOworCiAgICAgZW51bSBTaG91bGRJbmNsdWRlQWxsSW50ZXJzZWN0aW5nQ2Vs
bHMgewogICAgICAgICBJbmNsdWRlQWxsSW50ZXJzZWN0aW5nQ2VsbHMsCiAgICAgICAgIERvTm90
SW5jbHVkZUFsbEludGVyc2VjdGluZ0NlbGxzCkBAIC0zMzEsNiArMzMzLDExIEBAIGlubGluZSBD
ZWxsU3BhbiBSZW5kZXJUYWJsZVNlY3Rpb246OmZ1bGxUYWJsZVJvd1NwYW4oKSBjb25zdAogICAg
IHJldHVybiBDZWxsU3BhbigwLCBtX2dyaWQuc2l6ZSgpKTsKIH0KIAoraW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJCb3g+IFJlbmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlQW5vbnltb3VzQm94
V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUocmVu
ZGVyZXIuZG9jdW1lbnQoKSwgcmVuZGVyZXIuc3R5bGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclRh
YmxlU2VjdGlvbiwgaXNUYWJsZVNlY3Rpb24oKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>