<?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>218145</bug_id>
          
          <creation_ts>2020-10-23 19:06:07 -0700</creation_ts>
          <short_desc>[LFC] BoxGeometry logicalWidth/Height/Rect functions are confusing</short_desc>
          <delta_ts>2020-10-24 05:44:17 -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>koivisto</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>1701189</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-23 19:06:07 -0700</bug_when>
    <thetext>BoxGeometry has this double geometry interface where borderBox() is (0, 0, border box width, border box height) while logicalRect is in the coordinate system of the containing block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701190</commentid>
    <comment_count>1</comment_count>
      <attachid>412224</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-23 19:33:48 -0700</bug_when>
    <thetext>Created attachment 412224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701226</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-24 05:43:25 -0700</bug_when>
    <thetext>Committed r268948: &lt;https://trac.webkit.org/changeset/268948&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701227</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-24 05:44:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70649306&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412224</attachid>
            <date>2020-10-23 19:33:48 -0700</date>
            <delta_ts>2020-10-24 05:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218145-20201023193347.patch</filename>
            <type>text/plain</type>
            <size>45107</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA1MDdlODNmNmI4MDFk
OTVhMzJhYmY5NTM2YjNjZGNlMjZjOGQ3MC4uYjYzYTRiYTY1ODY4Y2U5ZmIyYWNkMjUzMzlkNTk1
M2Y0MTM2MjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIwLTEwLTIzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQm94R2VvbWV0cnkg
bG9naWNhbFdpZHRoL0hlaWdodC9SZWN0IGZ1bmN0aW9ucyBhcmUgY29uZnVzaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCb3hHZW9tZXRyeSByZXBy
ZXNlbnRzIHRoZSBsYXlvdXQgbm9kZSBib3RoIGFzIGEgYm94IHJlbGF0aXZlIHRvIHRoZSBjb250
YWluaW5nIGJsb2NrIChCb3hHZW9tZXRyeTo6bG9naWNhbFJlY3QoKSwgbG9naWNhbExlZnQoKSwg
bG9naWNhbFdpZHRoKCkpCisgICAgICAgIGFuZCBhcyBhIGJveCByZWxhdGl2ZSB0byB0aGUgYm9y
ZGVyIGJveCAoQm94R2VvbWV0cnk6Om1hcmdpbkJveCgpLCBwYWRkaW5nQm94KCksIGNvbnRlbnRC
b3goKSkuCisgICAgICAgIFRoZXNlIDIgc2V0cyBvZiBnZW9tZXRyaWVzIG1heSBiZSBjb25mdXNp
bmcgaW4gY2VydGFpbiBjYXNlcywgZS5nLiBsb2dpY2FsV2lkdGgoKSBkb2VzIG5vdCBzYXkgd2hl
dGhlciBpdCdzIGJvcmRlciwgcGFkZGluZyBvciBjb250ZW50IGJveC4KKyAgICAgICAgQm94R29t
ZXRyeSBpcyBtb3N0bHkgdXNlZCBhcyBhIGJveCByZWxhdGl2ZSB0byB0aGUgYm9yZGVyIGJveCAo
MCwgMCwgYm9yZGVyIGJveCB3aWR0aCwgYm9yZGVyIGJveCBoZWlnaHQpIHNvIGxldCdzIG1ha2Ug
dGhlIG90aGVyIHNldCBhcyBhCisgICAgICAgIHN0YXRpYyBBUEkuCisKKyAgICAgICAgKiBkaXNw
bGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpU
cmVlQnVpbGRlcjo6YnVpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJl
ZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmRpc3BsYXlCb3hGb3JSb290Qm94IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9t
ZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRl
eHRSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4gY29uc3QpOgorICAgICAgICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5l
ZWRlZCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRp
b25Gb3JGbG9hdENsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4gY29uc3QpOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRp
Y2FsUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIGxheW91dC9mbGV4Zm9ybWF0dGluZy9GbGV4
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9y
bWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyk6CisgICAgICAgICogbGF5b3V0
L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
bG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9yTm9uRmxvYXRpbmdGbG9hdEF2
b2lkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6
Om1hcFRvcExlZnRUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJv
b3RUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6
RmxvYXRJdGVtOjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6Ym90dG9tIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlR2Vv
bWV0cnlGb3JMaW5lQ29udGVudCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6aW5saW5lSXRlbVdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRCb3hHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveEdl
b21ldHJ5Ojpib3JkZXJCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveEdlb21ldHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveEdlb21ldHJ5
Ojpsb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94R2VvbWV0cnk6Omxv
Z2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94R2VvbWV0cnk6OmxvZ2lj
YWxUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRl
clJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3hHZW9tZXRyeTo6bWFyZ2luUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveEdlb21ldHJ5Ojpsb2dpY2FsQm90dG9t
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94R2VvbWV0cnk6
OmxvZ2ljYWxSaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJveEdlb21ldHJ5Ojpsb2dpY2FsQm90dG9tUmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCb3hHZW9tZXRyeTo6bG9naWNhbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3hHZW9tZXRyeTo6bG9naWNhbFdpZHRo
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94R2VvbWV0cnk6
OmxvZ2ljYWxIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3hHZW9tZXRyeTo6aXNFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveEdlb21ldHJ5Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveEdlb21ldHJ5Ojpsb2dpY2FsUmVjdFdpdGhNYXJnaW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToK
KyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpz
ZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y2VsbEhlaWdoIGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVM
YXlvdXQ6OmRpc3RyaWJ1dGVkVmVydGljYWxTcGFjZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENv
bnRleHQ6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgorCiAyMDIwLTEwLTIzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgaW5p
dGlhbCBzdXBwb3J0IGZvciB2ZXJ0aWNhbC1hbGlnbjogPGxlbmd0aD4gYW5kIDxwZXJjZW50YWdl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCmluZGV4
IGUyYjY0ZTI2YjVlMWExYTczMWI3NWYyZDM4ZTQ1NWU2YzUyMWYzZjIuLjU3YzZkODFmOWVhMGQ0
OThjMTA5ZjUxMTAwNTYxZDMzNjM4YTUwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rp
c3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKQEAgLTY3LDggKzY3LDggQEAgc3RkOjp1bmlxdWVfcHRy
PFRyZWU+IFRyZWVCdWlsZGVyOjpidWlsZChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSkKICAgICBpZiAoIXJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJvb3REaXNwbGF5Q29udGFpbmVyQm94KSk7
CiAKLSAgICBhdXRvIGJvcmRlckJveCA9IExheW91dFJlY3QgeyBnZW9tZXRyeS5sb2dpY2FsUmVj
dCgpIH07Ci0gICAgYXV0byBvZmZzZXQgPSB0b0xheW91dFNpemUoYm9yZGVyQm94LmxvY2F0aW9u
KCkpOworICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXQ6OkJveEdl
b21ldHJ5Ojpib3JkZXJCb3hSZWN0KGdlb21ldHJ5KSB9OworICAgIGF1dG8gb2Zmc2V0ID0gdG9M
YXlvdXRTaXplKGJvcmRlckJveFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmVjdXJzaXZlQnVpbGRE
aXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgb2Zmc2V0LCAqcm9vdExheW91dEJveC5maXJzdENoaWxk
KCksICpyb290RGlzcGxheUNvbnRhaW5lckJveCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRGlzcGxheSB0cmVlOlxuIiA8PCBkaXNw
bGF5VHJlZUFzVGV4dCgqcm9vdERpc3BsYXlDb250YWluZXJCb3gpKTsKQEAgLTEyNCw4ICsxMjQs
OCBAQCBCb3gqIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExh
eW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgIGlmICghbGF5b3V0Q29udGFpbmVyQm94
Lmhhc0NoaWxkKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIGJvcmRlckJv
eCA9IExheW91dFJlY3QgeyBnZW9tZXRyeS5sb2dpY2FsUmVjdCgpIH07Ci0gICAgb2Zmc2V0RnJv
bVJvb3QgKz0gdG9MYXlvdXRTaXplKGJvcmRlckJveC5sb2NhdGlvbigpKTsKKyAgICBhdXRvIGJv
cmRlckJveFJlY3QgPSBMYXlvdXRSZWN0IHsgTGF5b3V0OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94
UmVjdChnZW9tZXRyeSkgfTsKKyAgICBvZmZzZXRGcm9tUm9vdCArPSB0b0xheW91dFNpemUoYm9y
ZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8mIGRpc3BsYXlDb250YWluZXJCb3gg
PSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpyZXN1bHQpOwogCkBAIC0xNDYsMTggKzE0NiwxOCBA
QCBCb3gqIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91
dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxk
ZXI6OmRpc3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGdlb21l
dHJ5LCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdEJveCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogTmVlZCB0byBkbyBsb2dpY2FsIC0+IHBoeXNpY2FsIGNvb3JkaW5hdGUgbWFwcGlu
ZyBoZXJlLgotICAgIGF1dG8gYm9yZGVyQm94ID0gTGF5b3V0UmVjdCB7IGdlb21ldHJ5LmxvZ2lj
YWxSZWN0KCkgfTsKKyAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBMYXlvdXRSZWN0IHsgTGF5b3V0
OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChnZW9tZXRyeSkgfTsKIAogICAgIGF1dG8gc3R5
bGUgPSBTdHlsZSB7IHJvb3RCb3guc3R5bGUoKSB9OwotICAgIHJldHVybiBtYWtlVW5pcXVlPENv
bnRhaW5lckJveD4oc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJCb3gsIG1fcGl4ZWxTbmFw
cGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250
YWluZXJCb3g+KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwgbV9waXhlbFNu
YXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHlsZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Qm94
PiBUcmVlQnVpbGRlcjo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveEdl
b21ldHJ5JiBnZW9tZXRyeSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgTGF5b3V0U2l6
ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYXAgbG9n
aWNhbCB0byBwaHlzaWNhbCByZWN0cy4KLSAgICBhdXRvIGJvcmRlckJveCA9IExheW91dFJlY3Qg
eyBnZW9tZXRyeS5sb2dpY2FsUmVjdCgpIH07Ci0gICAgYm9yZGVyQm94Lm1vdmUob2Zmc2V0RnJv
bVJvb3QpOwotICAgIGF1dG8gcGl4ZWxTbmFwcGVkQm9yZGVyQm94ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhib3JkZXJCb3gsIG1fcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CisgICAgYXV0byBib3Jk
ZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJl
Y3QoZ2VvbWV0cnkpIH07CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKG9mZnNldEZyb21Sb290KTsK
KyAgICBhdXRvIHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CiAKICAgICAvLyBGSVhN
RTogSGFuZGxlIGlzQW5vbnltb3VzKCkKICAgICAvLyBGSVhNRTogRG8gaG9pc3Rpbmcgb2YgPGJv
ZHk+IHN0eWxlcyB0byB0aGUgcm9vdCB3aGVyZSBhcHByb3ByaWF0ZS4KQEAgLTE2OCwxMSArMTY4
LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnN0IExheW91dDo6Qm94R2VvbWV0CiAgICAgaWYgKGlzPExheW91dDo6UmVwbGFj
ZWRCb3g+KGxheW91dEJveCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdyb25nOyBnZW9tZXRyeSBu
ZWVkcyB0byB2ZW5kIHRoZSBjb3JyZWN0IHJlcGxhY2VkIGNvbnRlbnQgcmVjdC4KICAgICAgICAg
YXV0byByZXBsYWNlZENvbnRlbnRSZWN0ID0gTGF5b3V0UmVjdCB7IGdlb21ldHJ5LmNvbnRlbnRC
b3hMZWZ0KCksIGdlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSwgZ2VvbWV0cnkuY29udGVudEJveFdp
ZHRoKCksIGdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKSB9OwotICAgICAgICByZXBsYWNlZENv
bnRlbnRSZWN0Lm1vdmVCeShib3JkZXJCb3gubG9jYXRpb24oKSk7CisgICAgICAgIHJlcGxhY2Vk
Q29udGVudFJlY3QubW92ZUJ5KGJvcmRlckJveFJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIGF1
dG8gcGl4ZWxTbmFwcGVkUmVwbGFjZWRDb250ZW50UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMocmVwbGFjZWRDb250ZW50UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKTsKIAogICAgICAg
ICAvLyBGSVhNRTogRG9uJ3QgYXNzdW1lIGl0J3MgYW4gaW1hZ2UuCi0gICAgICAgIGF1dG8gaW1h
Z2VCb3ggPSBtYWtlVW5pcXVlPEltYWdlQm94PihwaXhlbFNuYXBwZWRCb3JkZXJCb3gsIFdURk1v
dmUoc3R5bGUpLCBwaXhlbFNuYXBwZWRSZXBsYWNlZENvbnRlbnRSZWN0KTsKKyAgICAgICAgYXV0
byBpbWFnZUJveCA9IG1ha2VVbmlxdWU8SW1hZ2VCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJl
Y3QsIFdURk1vdmUoc3R5bGUpLCBwaXhlbFNuYXBwZWRSZXBsYWNlZENvbnRlbnRSZWN0KTsKIAog
ICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxMYXlvdXQ6OlJlcGxhY2Vk
Qm94PihsYXlvdXRCb3gpLmNhY2hlZEltYWdlKCkpCiAgICAgICAgICAgICBpbWFnZUJveC0+c2V0
SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlKCkpOwpAQCAtMTgyLDEwICsxODIsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3hHZW9tZXQKICAgICAKICAgICBpZiAoaXM8TGF5b3V0OjpDb250YWluZXJCb3g+
KGxheW91dEJveCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBkZWNpc2lvbiB0byBtYWtlIGEg
Q29udGFpbmVyQm94IHNob3VsZCBiZSBtYWRlIGJhc2VkIG9uIHdoZXRoZXIgdGhpcyBEaXNwbGF5
OjpCb3ggd2lsbCBoYXZlIGNoaWxkcmVuLgotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250
YWluZXJCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveCwgV1RGTW92ZShzdHlsZSkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDb250YWluZXJCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJl
Y3QsIFdURk1vdmUoc3R5bGUpKTsKICAgICB9CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94LCBtX3BpeGVsU25hcHBpbmdGYWN0b3Ip
LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1v
dmUoc3R5bGUpKTsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQ5N2MwOGRiMTEzMDk0N2Vk
YmI1MDZmYzBhNmRiZmVjMGZhN2NkNzkuLmRkODFmMTA5N2QzYjYyNjBlOWNkMmNhY2VkN2IxYmIy
ODhhNzE0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2Vv
bWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KCkgY29uc3QKICAgICAgICAgaWYgKGxheW91dEJv
eC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkg
ewogICAgICAgICAgICAgLy8gdG9wICsgbWFyZ2luLXRvcCArIGJvcmRlci10b3Atd2lkdGggKyBw
YWRkaW5nLXRvcCArIGhlaWdodCArIHBhZGRpbmctYm90dG9tICsgYm9yZGVyLWJvdHRvbS13aWR0
aCArIG1hcmdpbi1ib3R0b20gKyBib3R0b20gPSBoZWlnaHQgb2YgY29udGFpbmluZyBibG9jawog
ICAgICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCk7Ci0gICAgICAgICAgICBBU1NFUlQoYm94R2VvbWV0
cnkubG9naWNhbFRvcCgpICsgYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRy
eS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgYm94
R2VvbWV0cnkuY29udGVudEJveEhlaWdodCgpCisgICAgICAgICAgICBBU1NFUlQoQm94R2VvbWV0
cnk6OmJvcmRlckJveFRvcChib3hHZW9tZXRyeSkgKyBib3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUo
KSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZh
bHVlT3IoMCkgKyBib3hHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkKICAgICAgICAgICAgICAg
ICArIGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApICsgYm94R2VvbWV0cnku
Ym9yZGVyQm90dG9tKCkgKyBib3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpID09IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMGY4MGYyZDEzYzZhNTQ0
MjgwNGNkMWE4YmQ1MmEyZDcwYmMxMGY4Yy4uMTRiODI3YjAyYjBkNDQzOGE3MDQwMjJkNzJmNjA4
NWRhZThkZTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIExheW91dFVuaXQgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRS
b290KGNvCiAgICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuaGFzSW5GbG93Q2hpbGQo
KSkgewogICAgICAgICAgICAgYXV0byYgZmlyc3RCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KCpmb3JtYXR0aW5nQ29udGV4dFJvb3QuZmlyc3RJbkZsb3dDaGls
ZCgpLCBFc2NhcGVSZWFzb246Ok5lZWRzR2VvbWV0cnlGcm9tRXN0YWJsaXNoZWRGb3JtYXR0aW5n
Q29udGV4dCk7CiAgICAgICAgICAgICBhdXRvJiBsYXN0Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveCgqZm9ybWF0dGluZ0NvbnRleHRSb290Lmxhc3RJbkZsb3dD
aGlsZCgpLCBFc2NhcGVSZWFzb246Ok5lZWRzR2VvbWV0cnlGcm9tRXN0YWJsaXNoZWRGb3JtYXR0
aW5nQ29udGV4dCk7Ci0gICAgICAgICAgICB0b3AgPSBmaXJzdEJveEdlb21ldHJ5LmxvZ2ljYWxS
ZWN0V2l0aE1hcmdpbigpLnRvcCgpOwotICAgICAgICAgICAgYm90dG9tID0gbGFzdEJveEdlb21l
dHJ5LmxvZ2ljYWxSZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpOworICAgICAgICAgICAgdG9wID0g
Qm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QoZmlyc3RCb3hHZW9tZXRyeSkudG9wKCk7CisgICAg
ICAgICAgICBib3R0b20gPSBCb3hHZW9tZXRyeTo6bWFyZ2luQm94UmVjdChsYXN0Qm94R2VvbWV0
cnkpLmJvdHRvbSgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAg
ICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0
YXRlPihsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvckJveChwcmV2aW91c0luRmxvd1Np
YmxpbmcpKTsKICAgICAgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW5Gb3JQcmV2aW91c0JveCA9
IGZvcm1hdHRpbmdTdGF0ZS51c2VkVmVydGljYWxNYXJnaW4ocHJldmlvdXNJbkZsb3dTaWJsaW5n
KTsKIAotICAgICAgICB0b3AgKz0gcHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeS5sb2dpY2FsQm90
dG9tKCkgKyB1c2VkVmVydGljYWxNYXJnaW5Gb3JQcmV2aW91c0JveC5ub25Db2xsYXBzZWRWYWx1
ZXMuYWZ0ZXI7CisgICAgICAgIHRvcCArPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChwcmV2
aW91c0luRmxvd0JveEdlb21ldHJ5KS5ib3R0b20oKSArIHVzZWRWZXJ0aWNhbE1hcmdpbkZvclBy
ZXZpb3VzQm94Lm5vbkNvbGxhcHNlZFZhbHVlcy5hZnRlcjsKICAgICB9IGVsc2UKICAgICAgICAg
dG9wID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LnBhcmVudCgp
LCBFc2NhcGVSZWFzb246Ok91dE9mRmxvd0JveE5lZWRzSW5GbG93R2VvbWV0cnkpLmNvbnRlbnRC
b3hUb3AoKTsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAg
ICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3gucGFyZW50KCk7IGFuY2VzdG9yICE9
ICZjb250YWluaW5nQmxvY2s7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2so
KSkgewogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21l
dHJ5Rm9yQm94KCphbmNlc3RvciwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxv
d0dlb21ldHJ5KTsKICAgICAgICAgLy8gQm94R2VvbWV0cnk6OnRvcCBpcyB0aGUgYm9yZGVyIGJv
eCB0b3AgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3Rl
bS4KLSAgICAgICAgdG9wICs9IGJveEdlb21ldHJ5LmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgdG9w
ICs9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3AoYm94R2VvbWV0cnkpOwogICAgICAgICBBU1NF
UlQoIWFuY2VzdG9yLT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9u
ZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0
byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBzcGVjaWZpYyB0byBhYm9sdXRlbHkgcG9z
aXRpb25lZCBib3hlcy4KQEAgLTMyMCw3ICszMjAsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9z
aQogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSAmbGF5b3V0Qm94LnBhcmVudCgpOyBhbmNlc3Rv
ciAhPSAmY29udGFpbmluZ0Jsb2NrOyBhbmNlc3RvciA9ICZhbmNlc3Rvci0+Y29udGFpbmluZ0Js
b2NrKCkpIHsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5n
ZW9tZXRyeUZvckJveCgqYW5jZXN0b3IsIEVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJ
bkZsb3dHZW9tZXRyeSk7CiAgICAgICAgIC8vIEJveEdlb21ldHJ5OjpsZWZ0IGlzIHRoZSBib3Jk
ZXIgYm94IGxlZnQgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRl
IHN5c3RlbS4KLSAgICAgICAgbGVmdCArPSBib3hHZW9tZXRyeS5sb2dpY2FsTGVmdCgpOworICAg
ICAgICBsZWZ0ICs9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hMZWZ0KGJveEdlb21ldHJ5KTsKICAg
ICAgICAgQVNTRVJUKCFhbmNlc3Rvci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRml4
ZWRQb3NpdGlvbmVkKCkpOwogICAgIH0KICAgICAvLyBNb3ZlIHRoZSBzdGF0aWMgcG9zaXRpb24g
cmVsYXRpdmUgdG8gdGhlIHBhZGRpbmcgYm94LiBUaGlzIGlzIHZlcnkgc3BlY2lmaWMgdG8gYWJv
bHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMuCkBAIC04MjYsOCArODI2LDggQEAgQ29udGVudEhlaWdo
dEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMo
Y29uc3QgQm94JgogICAgICAgICAgICAgaGVpZ2h0ID0gMF9sdTsKICAgICAgICAgZWxzZSBpZiAo
bGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSAmJiAhbGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgZG9jdW1lbnRCb3ggPSBkb3duY2Fz
dDxDb250YWluZXJCb3g+KGxheW91dEJveCk7Ci0gICAgICAgICAgICBhdXRvIHRvcCA9IGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmRvY3VtZW50Qm94LmZpcnN0SW5GbG93Q2hp
bGQoKSkubG9naWNhbFJlY3RXaXRoTWFyZ2luKCkudG9wKCk7Ci0gICAgICAgICAgICBhdXRvIGJv
dHRvbSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmRvY3VtZW50Qm94Lmxh
c3RJbkZsb3dDaGlsZCgpKS5sb2dpY2FsUmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKTsKKyAgICAg
ICAgICAgIGF1dG8gdG9wID0gQm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QoZm9ybWF0dGluZ0Nv
bnRleHQoKS5nZW9tZXRyeUZvckJveCgqZG9jdW1lbnRCb3guZmlyc3RJbkZsb3dDaGlsZCgpKSku
dG9wKCk7CisgICAgICAgICAgICBhdXRvIGJvdHRvbSA9IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hS
ZWN0KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmRvY3VtZW50Qm94Lmxhc3RJ
bkZsb3dDaGlsZCgpKSkuYm90dG9tKCk7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCAocXVpcms/KSBiZWhhdmlvciBzaW5jZSB0aGUgZG9jdW1lbnQgYm94IGlzIG5vdCBhIGZvcm1h
dHRpbmcgY29udGV4dCByb290IGFuZAogICAgICAgICAgICAgLy8gYWxsIHRoZSBmbG9hdCBib3hl
cyBlbmQgdXAgYXQgdGhlIElDQiBsZXZlbC4KICAgICAgICAgICAgIGF1dG8mIGluaXRpYWxDb250
YWluaW5nQmxvY2sgPSBkb2N1bWVudEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKTsKQEAgLTk2
NCw3ICs5NjQsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaQogICAgICAgICBoZWlnaHQgPSBy
ZXBsYWNlZEJveC5pbnRyaW5zaWNIZWlnaHQoKTsKICAgICB9IGVsc2UgaWYgKGhlaWdodElzQXV0
byAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNSYXRpbygpKSB7CiAgICAgICAgIC8vICMzCi0g
ICAgICAgIGF1dG8gdXNlZFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
cmVwbGFjZWRCb3gpLmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBhdXRvIHVzZWRXaWR0aCA9IGZv
cm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KHJlcGxhY2VkQm94KS5jb250ZW50Qm94V2lk
dGgoKTsKICAgICAgICAgaGVpZ2h0ID0gdXNlZFdpZHRoIC8gcmVwbGFjZWRCb3guaW50cmluc2lj
UmF0aW8oKTsKICAgICB9IGVsc2UgaWYgKGhlaWdodElzQXV0byAmJiByZXBsYWNlZEJveC5oYXNJ
bnRyaW5zaWNIZWlnaHQoKSkgewogICAgICAgICAvLyAjNApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAppbmRleCA5M2UwNjFmNWYzYjVmMGQ2YjhhOTRkM2M3MGE1OGQ5NDJkMjMx
YTgxLi4xNWEyYjdmYmQxNzkwM2RhNTg1YmNmNGM2ZDExZmUwMmY2OWU3ZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBi
b29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uCiAKICAgICBhdXRvIHJlbmRlckJveExpa2VNYXJnaW5Cb3ggPSBbJl0g
KGNvbnN0IGF1dG8mIGJveEdlb21ldHJ5KSB7CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbml0
aWFsQ29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkubG9n
aWNhbFJlY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVj
dChib3hHZW9tZXRyeSk7CiAKICAgICAgICAgLy8gUHJvZHVjZSBhIFJlbmRlckJveCBtYXRjaGlu
ZyBtYXJnaW4gYm94LgogICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0
U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50
Qm94V2lkdGgoKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbgog
ICAgICAgICAvLyBXaGVuIHRoZSA8dGFibGU+IGlzIG91dC1vZi1mbG93IHBvc2l0aW9uZWQsIHRo
ZSB3cmFwcGVyIHRhYmxlIGJveCBoYXMgdGhlIG9mZnNldAogICAgICAgICAvLyB3aGlsZSB0aGUg
YWN0dWFsIHRhYmxlIGJveCBpcyBzdGF0aWMsIGluZmxvdy4KICAgICAgICAgYXV0byYgdGFibGVX
cmFwcGVyQm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCkpOwotICAgICAgICBib3hHZW9tZXRyeS5tb3ZlQnkodGFibGVXcmFw
cGVyQm94R2VvbWV0cnkubG9naWNhbFRvcExlZnQoKSk7CisgICAgICAgIGJveEdlb21ldHJ5Lm1v
dmVCeShCb3hHZW9tZXRyeTo6Ym9yZGVyQm94VG9wTGVmdCh0YWJsZVdyYXBwZXJCb3hHZW9tZXRy
eSkpOwogICAgICAgICAvLyBUYWJsZSB3cmFwcGVyIGJveCBoYXMgdGhlIG1hcmdpbiB2YWx1ZXMg
Zm9yIHRoZSB0YWJsZS4KICAgICAgICAgYm94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih0
YWJsZVdyYXBwZXJCb3hHZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCkpOwogICAgICAgICBib3hH
ZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih0YWJsZVdyYXBwZXJCb3hHZW9tZXRyeS52ZXJ0aWNh
bE1hcmdpbigpKTsKQEAgLTIzNCw4ICsyMzQsOCBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbgog
ICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPihyZW5kZXJlcikgJiYgKGRvd25jYXN0
PFJlbmRlclRhYmxlU2VjdGlvbj4ocmVuZGVyZXIpLnRhYmxlKCktPmNvbGxhcHNlQm9yZGVycygp
IHx8IHJlbmRlcmVyLnN0eWxlKCkuaGFzQm9yZGVyKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICBpZiAoIWFyZUVzc2VudGlhbGx5RXF1YWwoZnJhbWVSZWN0LCBib3hH
ZW9tZXRyeS5sb2dpY2FsUmVjdCgpKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJmcmFtZUJveCIs
IHJlbmRlcmVyLmZyYW1lUmVjdCgpLCBib3hHZW9tZXRyeS5sb2dpY2FsUmVjdCgpKTsKKyAgICBp
ZiAoIWFyZUVzc2VudGlhbGx5RXF1YWwoZnJhbWVSZWN0LCBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94
UmVjdChib3hHZW9tZXRyeSkpKSB7CisgICAgICAgIG91dHB1dFJlY3QoImZyYW1lQm94IiwgcmVu
ZGVyZXIuZnJhbWVSZWN0KCksIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggNTVhODNiZmUyNmNhZWZhZTEzMDg3ZThmYTFjNWYxNjM1NzIyNTgzOS4u
NTc2MzEwNTUwNDM3ZmExYmNlNWNjZTZiMmJmZmM3NTBiMzhiODFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xODIsOSArMTgyLDkgQEAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9p
ZGVyKGMKICAgICBwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckJveEFuZEFuY2VzdG9ycyhs
YXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpcik7CiAKICAgICBhdXRvIGxvZ2ljYWxUb3BJbkZvcm1h
dHRpbmdDb250ZXh0Um9vdENvb3JkaW5hdGUgPSBbJl0gKGF1dG8mIGZsb2F0QXZvaWRlcikgewot
ICAgICAgICBhdXRvIHRvcCA9IGdlb21ldHJ5Rm9yQm94KGZsb2F0QXZvaWRlcikubG9naWNhbFRv
cCgpOworICAgICAgICBhdXRvIHRvcCA9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3AoZ2VvbWV0
cnlGb3JCb3goZmxvYXRBdm9pZGVyKSk7CiAgICAgICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSAm
ZmxvYXRBdm9pZGVyLmNvbnRhaW5pbmdCbG9jaygpOyBhbmNlc3RvciAhPSAmcm9vdCgpOyBhbmNl
c3RvciA9ICZhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgICAgICB0b3AgKz0g
Z2VvbWV0cnlGb3JCb3goKmFuY2VzdG9yKS5sb2dpY2FsVG9wKCk7CisgICAgICAgICAgICB0b3Ag
Kz0gQm94R2VvbWV0cnk6OmJvcmRlckJveFRvcChnZW9tZXRyeUZvckJveCgqYW5jZXN0b3IpKTsK
ICAgICAgICAgcmV0dXJuIHRvcDsKICAgICB9OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRo
Rm9yRmxvYXRBdm9pZGVyKGMKICAgICAgICAgICAgIHJldHVybiBGbG9hdGluZ0NvbnRleHQ6OkNv
bnN0cmFpbnRzIHsgfTsKICAgICAgICAgYXV0byBvZmZzZXQgPSBMYXlvdXRTaXplIHsgfTsKICAg
ICAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7
IGFuY2VzdG9yICE9ICZyb290KCk7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5jb250YWluaW5nQmxv
Y2soKSkKLSAgICAgICAgICAgIG9mZnNldCArPSB0b0xheW91dFNpemUoZ2VvbWV0cnlGb3JCb3go
KmFuY2VzdG9yKS5sb2dpY2FsVG9wTGVmdCgpKTsKKyAgICAgICAgICAgIG9mZnNldCArPSB0b0xh
eW91dFNpemUoQm94R2VvbWV0cnk6OmJvcmRlckJveFRvcExlZnQoZ2VvbWV0cnlGb3JCb3goKmFu
Y2VzdG9yKSkpOwogICAgICAgICBpZiAoZmxvYXRDb25zdHJhaW50cy5sZWZ0KQogICAgICAgICAg
ICAgZmxvYXRDb25zdHJhaW50cy5sZWZ0ID0gUG9pbnRJbkNvbnRleHRSb290IHsgKmZsb2F0Q29u
c3RyYWludHMubGVmdCAtIG9mZnNldCB9OwogICAgICAgICBpZiAoZmxvYXRDb25zdHJhaW50cy5y
aWdodCkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9hdGluZwogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJv
eEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgQVNTRVJUKHZlcnRpY2FsUG9zaXRpb25BbmRDbGVh
cmFuY2UtPnBvc2l0aW9uID49IGJveEdlb21ldHJ5LmxvZ2ljYWxUb3AoKSk7CisgICAgQVNTRVJU
KHZlcnRpY2FsUG9zaXRpb25BbmRDbGVhcmFuY2UtPnBvc2l0aW9uID49IEJveEdlb21ldHJ5Ojpi
b3JkZXJCb3hUb3AoYm94R2VvbWV0cnkpKTsKICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9w
KHZlcnRpY2FsUG9zaXRpb25BbmRDbGVhcmFuY2UtPnBvc2l0aW9uKTsKICAgICBpZiAodmVydGlj
YWxQb3NpdGlvbkFuZENsZWFyYW5jZS0+Y2xlYXJhbmNlKQogICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUoKS5zZXRIYXNDbGVhcmFuY2UobGF5b3V0Qm94KTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCBMYXlv
dXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2lu
KGNvbnN0IEJveCYgbGF5b3V0QgogICAgIC8vIDQuIEdvIHRvIHByZXZpb3VzIGJveCBhbmQgc3Rh
cnQgZnJvbSBzdGVwICMxIHVudGlsIHdlIGhpdCB0aGUgcGFyZW50IGJveC4KICAgICBhdXRvJiBi
b3hHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgaWYgKGZvcm1hdHRp
bmdTdGF0ZSgpLmhhc0NsZWFyYW5jZShsYXlvdXRCb3gpKQotICAgICAgICByZXR1cm4gYm94R2Vv
bWV0cnkubG9naWNhbFRvcCgpOworICAgICAgICByZXR1cm4gQm94R2VvbWV0cnk6OmJvcmRlckJv
eFRvcChib3hHZW9tZXRyeSk7CiAKICAgICBhdXRvKiBjdXJyZW50TGF5b3V0Qm94ID0gJmxheW91
dEJveDsKICAgICB3aGlsZSAoY3VycmVudExheW91dEJveCkgewpAQCAtNDg1LDEyICs0ODUsMTIg
QEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aE1hcmdpbihjb25zdCBCb3gmIGxheW91dEIKICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dT
aWJsaW5nID0gKmN1cnJlbnRMYXlvdXRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAg
ICAgICBpZiAoIW1hcmdpbkNvbGxhcHNlKCkubWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFByZXZp
b3VzU2libGluZ01hcmdpbkFmdGVyKCpjdXJyZW50TGF5b3V0Qm94KSkgewogICAgICAgICAgICAg
YXV0byYgcHJldmlvdXNCb3hHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KHByZXZpb3VzSW5GbG93
U2libGluZyk7Ci0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3hHZW9tZXRyeS5sb2dpY2Fs
UmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSArIG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdpbik7
CisgICAgICAgICAgICByZXR1cm4gQm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QocHJldmlvdXNC
b3hHZW9tZXRyeSkuYm90dG9tKCkgKyBtYXJnaW5CZWZvcmUodmVydGljYWxNYXJnaW4pOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFtYXJnaW5Db2xsYXBzZSgpLm1hcmdpbnNDb2xsYXBzZVRo
cm91Z2gocHJldmlvdXNJbkZsb3dTaWJsaW5nKSkgewogICAgICAgICAgICAgYXV0byYgcHJldmlv
dXNCb3hHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KHByZXZpb3VzSW5GbG93U2libGluZyk7Ci0g
ICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3hHZW9tZXRyeS5sb2dpY2FsQm90dG9tKCkgKyBt
YXJnaW5CZWZvcmUodmVydGljYWxNYXJnaW4pOworICAgICAgICAgICAgcmV0dXJuIEJveEdlb21l
dHJ5Ojpib3JkZXJCb3hSZWN0KHByZXZpb3VzQm94R2VvbWV0cnkpLmJvdHRvbSgpICsgbWFyZ2lu
QmVmb3JlKHZlcnRpY2FsTWFyZ2luKTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50TGF5b3V0
Qm94ID0gJnByZXZpb3VzSW5GbG93U2libGluZzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggOTlmNmI1NmZjMWEyOGQ0YWI0MTk0ZGY3
ODYwMzEyOGFhY2Y5ZDIxYS4uZmMyZGY1ZmNlNzlkMDlhMzIzMTFjOGY0MDRjMDI5MzUzYWEwMzg5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
ODgsNyArODgsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodAogICAgICAgICBhdXRvJiBsYXN0
SW5GbG93Q2hpbGQgPSAqbGF5b3V0Q29udGFpbmVyLmxhc3RJbkZsb3dDaGlsZCgpOwogICAgICAg
ICBpZiAoIWZvcm1hdHRpbmdDb250ZXh0KCkubWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXN0SW5GbG93Q2hpbGQpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBsYXN0SW5GbG93Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgICAgICAgICBhdXRvIGJvdHRvbUVk
Z2VPZkJvdHRvbU1hcmdpbiA9IGxhc3RJbkZsb3dCb3hHZW9tZXRyeS5sb2dpY2FsQm90dG9tKCkg
KyBsYXN0SW5GbG93Qm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKTsgCisgICAgICAgICAgICBhdXRv
IGJvdHRvbUVkZ2VPZkJvdHRvbU1hcmdpbiA9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGxh
c3RJbkZsb3dCb3hHZW9tZXRyeSkuYm90dG9tKCkgKyBsYXN0SW5GbG93Qm94R2VvbWV0cnkubWFy
Z2luQWZ0ZXIoKTsKICAgICAgICAgICAgIHJldHVybiB7IGJvdHRvbUVkZ2VPZkJvdHRvbU1hcmdp
biAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogICAgICAgICB9
CiAKQEAgLTk4LDcgKzk4LDcgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQKICAgICAgICAgICAg
IGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAg
ICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxvd0JveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqaW5GbG93Q2hpbGQpOwot
ICAgICAgICAgICAgcmV0dXJuIHsgaW5GbG93Qm94R2VvbWV0cnkubG9naWNhbFRvcCgpICsgaW5G
bG93Qm94R2VvbWV0cnkuYm9yZGVyQm94KCkuaGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nVG9w
LCBub25Db2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IEJveEdlb21ldHJ5
Ojpib3JkZXJCb3hUb3AoaW5GbG93Qm94R2VvbWV0cnkpICsgaW5GbG93Qm94R2VvbWV0cnkuYm9y
ZGVyQm94KCkuaGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJn
aW4gfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQpAQCAtMjM4
LDcgKzIzOCw3IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsCiAgICAgLy8gVmVydGljYWwgbWFy
Z2lucyBiZXR3ZWVuIGFkamFjZW50IGJsb2NrLWxldmVsIGJveGVzIGluIGEgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0IGNvbGxhcHNlLgogICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxp
bmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byYg
cHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlG
b3JCb3goKnByZXZpb3VzSW5GbG93U2libGluZyk7Ci0gICAgICAgIHJldHVybiBwcmV2aW91c0lu
Rmxvd0JveEdlb21ldHJ5LmxvZ2ljYWxCb3R0b20oKSArIHByZXZpb3VzSW5GbG93Qm94R2VvbWV0
cnkubWFyZ2luQWZ0ZXIoKTsKKyAgICAgICAgcmV0dXJuIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hS
ZWN0KHByZXZpb3VzSW5GbG93Qm94R2VvbWV0cnkpLmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dC
b3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpOwogICAgIH0KICAgICByZXR1cm4gdmVydGljYWxDb25z
dHJhaW50cy5sb2dpY2FsVG9wOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBh
ZjRmOTMwYWUwNDE5MTkwMmY1ZTEzOTJhODZhM2M3ZTU5M2Q5OTg2Li5hOWFiZDY2YzE5ZGU5MTA5
M2E4YzczMGM5NTU0NTQ1NmRhZWIxMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtOTEsOCArOTEsOCBAQCB2b2lkIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBsYWNl
RmxleEl0ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udAogCiAgICAgICAgICAgICBm
bGV4SXRlbUdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZ2VvbWV0cnkuY29udGVudEhlaWdo
dEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChmbGV4SXRlbSkpOwogICAgICAgICAgICAgZmxleEl0
ZW1HZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoZmxleEl0ZW1Mb2dpY2FsV2lkdGgpOwotICAg
ICAgICAgICAgZmxleEl0ZW1NYWluQXhpc0VuZD0gZmxleEl0ZW1HZW9tZXRyeS5sb2dpY2FsUmln
aHQoKTsKLSAgICAgICAgICAgIGZsZXhJdGVtQ3Jvc0F4aXNFbmQgPSBzdGQ6Om1heChmbGV4SXRl
bUNyb3NBeGlzRW5kLCBmbGV4SXRlbUdlb21ldHJ5LmxvZ2ljYWxCb3R0b20oKSk7CisgICAgICAg
ICAgICBmbGV4SXRlbU1haW5BeGlzRW5kPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChmbGV4
SXRlbUdlb21ldHJ5KS5yaWdodCgpOworICAgICAgICAgICAgZmxleEl0ZW1Dcm9zQXhpc0VuZCA9
IHN0ZDo6bWF4KGZsZXhJdGVtQ3Jvc0F4aXNFbmQsIEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0
KGZsZXhJdGVtR2VvbWV0cnkpLmJvdHRvbSgpKTsKICAgICAgICAgfTsKICAgICAgICAgY29tcHV0
ZUZsZXhJdGVtR2VvbWV0cnkoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggY2Y3MWYwOWM0NWNlYTVmNjIwZjNkNDNl
MzgxMmFkNzIxMGVjMjRhZC4uM2QwYmUzMDUwZTUyNWI5ZGIxNzgxMjBhNTUxMjNlOWU5YmRlMTA2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmNwcApAQCAtMjI5LDEwICsyMjksMTAgQEAgTGF5b3V0UG9pbnQgRmxvYXRpbmdDb250ZXh0Ojpw
b3NpdGlvbkZvckZsb2F0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem8KICAgICAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZsb2F0aW5nIHRvIGFsaWduIHdpdGgsIHB1c2ggdGhl
IGJveCB0byB0aGUgbGVmdC9yaWdodCBlZGdlIG9mIGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29u
dGVudCBib3guCiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzTGVmdEZsb2F0aW5nUG9zaXRp
b25lZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB7IGhvcml6b250YWxDb25zdHJhaW50cy5s
b2dpY2FsTGVmdCArIGJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgfTsKLSAgICAgICAgICAgIHJl
dHVybiB7IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsUmlnaHQoKSAtIGJveEdlb21ldHJ5
Lm1hcmdpbkVuZCgpIC0gYm94R2VvbWV0cnkubG9naWNhbFdpZHRoKCkgfTsKKyAgICAgICAgICAg
IHJldHVybiB7IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsUmlnaHQoKSAtIGJveEdlb21l
dHJ5Lm1hcmdpbkVuZCgpIC0gYm94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSB9OwogICAgICAg
ICB9OwogICAgICAgICAvLyBObyBmbG9hdCBib3ggb24gdGhlIGNvbnRleHQgeWV0IC0+IGFsaWdu
IGl0IHdpdGggdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBsZWZ0L3JpZ2h0IGVkZ2UuCi0gICAgICAg
IHJldHVybiB7IGFsaWduV2l0aENvbnRhaW5pbmdCbG9jaygpLCBib3hHZW9tZXRyeS5sb2dpY2Fs
VG9wKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgYWxpZ25XaXRoQ29udGFpbmluZ0Jsb2NrKCksIEJv
eEdlb21ldHJ5Ojpib3JkZXJCb3hUb3AoYm94R2VvbWV0cnkpIH07CiAgICAgfQogCiAgICAgLy8g
RmluZCB0aGUgdG9wIG1vc3QgcG9zaXRpb24gd2hlcmUgdGhlIGZsb2F0IGJveCBmaXRzLgpAQCAt
MjY5LDcgKzI2OSw3IEBAIExheW91dFBvaW50IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JG
bG9hdChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvCiAgICAgYWJzb2x1dGVUb3BM
ZWZ0LnNldFkodmVydGljYWxQb3NpdGlvbkNhbmRpZGF0ZSk7CiAgICAgYXV0byBob3Jpem9udGFs
TWFyZ2luID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAgICAgYXV0byBtYXJnaW5zID0gRWRnZXMgeyB7ICpo
b3Jpem9udGFsTWFyZ2luLnN0YXJ0LCAqaG9yaXpvbnRhbE1hcmdpbi5lbmQgfSwgeyBib3hHZW9t
ZXRyeS5tYXJnaW5CZWZvcmUoKSwgYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSB9IH07Ci0gICAg
YXV0byBmbG9hdEJveCA9IEZsb2F0QXZvaWRlciB7IGxheW91dEJveCwgYWJzb2x1dGVUb3BMZWZ0
LCBib3hHZW9tZXRyeS5sb2dpY2FsV2lkdGgoKSwgbWFyZ2lucywgYWJzb2x1dGVDb29yZGluYXRl
cy5jb250YWluaW5nQmxvY2tDb250ZW50Qm94IH07CisgICAgYXV0byBmbG9hdEJveCA9IEZsb2F0
QXZvaWRlciB7IGxheW91dEJveCwgYWJzb2x1dGVUb3BMZWZ0LCBib3hHZW9tZXRyeS5ib3JkZXJC
b3hXaWR0aCgpLCBtYXJnaW5zLCBhYnNvbHV0ZUNvb3JkaW5hdGVzLmNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRCb3ggfTsKICAgICBmaW5kQXZhaWxhYmxlUG9zaXRpb24oZmxvYXRCb3gsIG1fZmxvYXRp
bmdTdGF0ZS5mbG9hdHMoKSk7CiAgICAgLy8gQ29udmVydCBib3ggY29vcmRpbmF0ZXMgZnJvbSBm
b3JtYXR0aW5nIHJvb3QgYmFjayB0byBjb250YWluaW5nIGJsb2NrLgogICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrVG9wTGVmdCA9IGFic29sdXRlQ29vcmRpbmF0ZXMuY29udGFpbmluZ0Jsb2NrVG9w
TGVmdDsKQEAgLTI4NCwxMyArMjg0LDEzIEBAIExheW91dFBvaW50IEZsb2F0aW5nQ29udGV4dDo6
cG9zaXRpb25Gb3JOb25GbG9hdGluZ0Zsb2F0QXZvaWRlcihjb25zdCBCb3gmIGxheW91CiAgICAg
QVNTRVJUKGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChtX2Zsb2F0aW5nU3RhdGUpKTsKIAog
ICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGxheW91dEJveCkubG9naWNhbFRvcExlZnQoKTsKKyAgICAgICAgcmV0dXJu
IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3BMZWZ0KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0
cnlGb3JCb3gobGF5b3V0Qm94KSk7CiAKICAgICBhdXRvIGFic29sdXRlQ29vcmRpbmF0ZXMgPSB0
aGlzLT5hYnNvbHV0ZUNvb3JkaW5hdGVzKGxheW91dEJveCk7CiAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
YXV0byBob3Jpem9udGFsTWFyZ2luID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJv
eCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAgICAgYXV0byBtYXJnaW5z
ID0gRWRnZXMgeyB7ICpob3Jpem9udGFsTWFyZ2luLnN0YXJ0LCAqaG9yaXpvbnRhbE1hcmdpbi5l
bmQgfSwgeyBib3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSwgYm94R2VvbWV0cnkubWFyZ2luQWZ0
ZXIoKSB9IH07Ci0gICAgYXV0byBmbG9hdEF2b2lkZXIgPSBGbG9hdEF2b2lkZXIgeyBsYXlvdXRC
b3gsIGFic29sdXRlQ29vcmRpbmF0ZXMudG9wTGVmdCwgYm94R2VvbWV0cnkubG9naWNhbFdpZHRo
KCksIG1hcmdpbnMsIGFic29sdXRlQ29vcmRpbmF0ZXMuY29udGFpbmluZ0Jsb2NrQ29udGVudEJv
eCB9OworICAgIGF1dG8gZmxvYXRBdm9pZGVyID0gRmxvYXRBdm9pZGVyIHsgbGF5b3V0Qm94LCBh
YnNvbHV0ZUNvb3JkaW5hdGVzLnRvcExlZnQsIGJveEdlb21ldHJ5LmJvcmRlckJveFdpZHRoKCks
IG1hcmdpbnMsIGFic29sdXRlQ29vcmRpbmF0ZXMuY29udGFpbmluZ0Jsb2NrQ29udGVudEJveCB9
OwogICAgIGZpbmRQb3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChmbG9hdEF2b2lkZXIp
OwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrVG9wTGVmdCA9IGFic29sdXRlQ29vcmRpbmF0ZXMu
Y29udGFpbmluZ0Jsb2NrVG9wTGVmdDsKICAgICByZXR1cm4geyBmbG9hdEF2b2lkZXIubGVmdCgp
IC0gY29udGFpbmluZ0Jsb2NrVG9wTGVmdC54KCksIGZsb2F0QXZvaWRlci50b3AoKSAtIGNvbnRh
aW5pbmdCbG9ja1RvcExlZnQueSgpIH07CkBAIC01MDksOSArNTA5LDkgQEAgRmxvYXRpbmdDb250
ZXh0OjpBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgRmxvYXRpbmdDb250
ZXh0OjphYnNvbHUKIExheW91dFBvaW50IEZsb2F0aW5nQ29udGV4dDo6bWFwVG9wTGVmdFRvRmxv
YXRpbmdTdGF0ZVJvb3QoY29uc3QgQm94JiBmbG9hdEJveCkgY29uc3QKIHsKICAgICBhdXRvJiBm
bG9hdGluZ1N0YXRlUm9vdCA9IGZsb2F0aW5nU3RhdGUoKS5yb290KCk7Ci0gICAgYXV0byB0b3BM
ZWZ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChmbG9hdEJveCwgRm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hJc0Fsd2F5c1JlbGF0aXZlVG9GbG9h
dFN0YXRlUm9vdCkubG9naWNhbFRvcExlZnQoKTsKKyAgICBhdXRvIHRvcExlZnQgPSBCb3hHZW9t
ZXRyeTo6Ym9yZGVyQm94VG9wTGVmdChmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94
KGZsb2F0Qm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGbG9hdEJveElzQWx3
YXlzUmVsYXRpdmVUb0Zsb2F0U3RhdGVSb290KSk7CiAgICAgZm9yIChhdXRvKiBjb250YWluaW5n
QmxvY2sgPSAmZmxvYXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5pbmdCbG9jayAhPSAm
ZmxvYXRpbmdTdGF0ZVJvb3Q7IGNvbnRhaW5pbmdCbG9jayA9ICZjb250YWluaW5nQmxvY2stPmNv
bnRhaW5pbmdCbG9jaygpKQotICAgICAgICB0b3BMZWZ0Lm1vdmVCeShmb3JtYXR0aW5nQ29udGV4
dCgpLmdlb21ldHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpF
c2NhcGVSZWFzb246OkZsb2F0Qm94SXNBbHdheXNSZWxhdGl2ZVRvRmxvYXRTdGF0ZVJvb3QpLmxv
Z2ljYWxUb3BMZWZ0KCkpOworICAgICAgICB0b3BMZWZ0Lm1vdmVCeShCb3hHZW9tZXRyeTo6Ym9y
ZGVyQm94VG9wTGVmdChmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpjb250YWlu
aW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94SXNBbHdh
eXNSZWxhdGl2ZVRvRmxvYXRTdGF0ZVJvb3QpKSk7CiAgICAgcmV0dXJuIHRvcExlZnQ7CiB9CiAK
QEAgLTUyMyw3ICs1MjMsNyBAQCBQb2ludCBGbG9hdGluZ0NvbnRleHQ6Om1hcFBvaW50RnJvbUZv
cm1hdHRpbmdDb250ZXh0Um9vdFRvRmxvYXRpbmdTdGF0ZVJvb3QoUG9pbgogICAgICAgICByZXR1
cm4gcG9zaXRpb247CiAgICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIGZv
ciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gJmZyb207IGNvbnRhaW5pbmdCbG9jayAhPSAmdG87
IGNvbnRhaW5pbmdCbG9jayA9ICZjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQot
ICAgICAgICBtYXBwZWRQb3NpdGlvbi5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveCgqY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29u
OjpGbG9hdEJveElzQWx3YXlzUmVsYXRpdmVUb0Zsb2F0U3RhdGVSb290KS5sb2dpY2FsVG9wTGVm
dCgpKTsKKyAgICAgICAgbWFwcGVkUG9zaXRpb24ubW92ZUJ5KEJveEdlb21ldHJ5Ojpib3JkZXJC
b3hUb3BMZWZ0KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5pbmdC
bG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hJc0Fsd2F5c1Jl
bGF0aXZlVG9GbG9hdFN0YXRlUm9vdCkpKTsKICAgICByZXR1cm4gbWFwcGVkUG9zaXRpb247CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKaW5kZXgg
NTk1YzAzNGQwNzg4Nzg4ODhiMjhhZDAyOTk4MzgzZDU3OGUyYzQ0NS4uYjVjNmZlMTNmNGFlMjBi
NzM1NmEwNzM5NjVlZjcyYzU4Y2FkZTJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ1N0YXRlLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgICAgICBi
b29sIGlzTGVmdFBvc2l0aW9uZWQoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uID09IFBvc2l0
aW9uOjpMZWZ0OyB9CiAgICAgICAgIGJvb2wgaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoY29uc3Qg
Q29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
b3V0Qm94LT5pc0luRm9ybWF0dGluZ0NvbnRleHRPZihmb3JtYXR0aW5nQ29udGV4dFJvb3QpOyB9
CiAKLSAgICAgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1
dGVCb3hHZW9tZXRyeS5sb2dpY2FsUmVjdFdpdGhNYXJnaW4oKTsgfQorICAgICAgICBSZWN0IHJl
Y3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gQm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3Qo
bV9hYnNvbHV0ZUJveEdlb21ldHJ5KTsgfQogICAgICAgICBCb3hHZW9tZXRyeTo6SG9yaXpvbnRh
bE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUJveEdl
b21ldHJ5Lmhvcml6b250YWxNYXJnaW4oKTsgfQotICAgICAgICBQb3NpdGlvbkluQ29udGV4dFJv
b3QgYm90dG9tKCkgY29uc3QgeyByZXR1cm4geyBtX2Fic29sdXRlQm94R2VvbWV0cnkubG9naWNh
bEJvdHRvbSgpIH07IH0KKyAgICAgICAgUG9zaXRpb25JbkNvbnRleHRSb290IGJvdHRvbSgpIGNv
bnN0IHsgcmV0dXJuIHsgQm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QobV9hYnNvbHV0ZUJveEdl
b21ldHJ5KS5ib3R0b20oKSB9OyB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBjb25z
dCBCb3gqIGZsb2F0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3guZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBjN2E2Mjg4NDNiM2Q5YzllNDQ0
ODA4ZmM1NjU3N2E4Njg3MzRjOGFhLi44MjgxMzU4NjU0ZmVlN2M5Zjg0NjliNGZjM2QxN2ZlOTlm
N2U1NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00ODUsNyAr
NDg1LDcgQEAgSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21l
dHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBqdXN0IGEgc2ltcGxl
IGJveCBnZW9tZXRyeSBmb3IgdGhlIGxpbmUgc3Bhbm5pbmcgaW5saW5lIGJveC4gZ2V0Qm91bmRp
bmdDbGllbnRSZWN0IGxvb2tzIGludG8gZWFjaCBsaW5lIGJveGVzICh3aWxsIHR1cm4gaW50byBm
cmFnbWVudGVkIGJveGVzKS4KLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxMZWZ0
KHN0ZDo6bWluKGJveEdlb21ldHJ5LmxvZ2ljYWxMZWZ0KCksIHRvTGF5b3V0VW5pdChib3JkZXJC
b3hMb2dpY2FsVG9wTGVmdC54KCkpKSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dp
Y2FsTGVmdChzdGQ6Om1pbihCb3hHZW9tZXRyeTo6Ym9yZGVyQm94TGVmdChib3hHZW9tZXRyeSks
IHRvTGF5b3V0VW5pdChib3JkZXJCb3hMb2dpY2FsVG9wTGVmdC54KCkpKSk7CiAgICAgICAgICAg
ICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoc3RkOjptYXgodG9MYXlvdXRVbml0KGNv
bnRlbnRCb3hXaWR0aCksIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hIZWlnaHQoKSArIHRvTGF5b3V0VW5pdChsb2dpY2FsUmVjdC5oZWlnaHQoKSkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggYThjOTJlMzk3MzU0NjEyMzRhNTMxMjky
Yzg1NzY1OGZkZGEyNGE0MC4uMTY0NGVjOGJlNGE5ZDFmMjVmNTkxNTk2ZGEyMjE5NzM3Nzc1ZGQ5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIElubGluZUxh
eW91dFVuaXQgTGluZUJ1aWxkZXI6OmlubGluZUl0ZW1XaWR0aChjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtLCBJbmxpCiAgICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5Cb3hXaWR0
aCgpOwogCiAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVy
biBib3hHZW9tZXRyeS5sb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5
LmJvcmRlckJveFdpZHRoKCk7CiAKICAgICBpZiAoaW5saW5lSXRlbS5pc0NvbnRhaW5lclN0YXJ0
KCkpCiAgICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpICsgYm94R2VvbWV0
cnkuYm9yZGVyTGVmdCgpICsgYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwpA
QCAtMjUwLDcgKzI1MCw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1aWxkZXI6OmlubGluZUl0
ZW1XaWR0aChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpCiAgICAgICAgIHJldHVy
biBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCkgKyBi
b3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwogCiAgICAgLy8gTm9uLXJlcGxh
Y2VkIGlubGluZSBib3ggKGUuZy4gaW5saW5lLWJsb2NrKQotICAgIHJldHVybiBib3hHZW9tZXRy
eS5sb2dpY2FsV2lkdGgoKTsKKyAgICByZXR1cm4gYm94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgo
KTsKIH0KIAogTGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBm
bG9hdGluZ0NvbnRleHQsIGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
LCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRyeS5jcHAKaW5kZXggNjFkNWQy
YmY0MDU4ZWY3ZGFhNTk5MGE3NGFhMTVlZTcxNGYyNDY5ZC4uZmQ4NTJkM2M1YzE2MzFjM2UwMzUx
OWNkODdkNWJkNjgzMDg2NTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5LmNwcApAQCAtNzcsNyArNzcsNyBAQCBSZWN0
IEJveEdlb21ldHJ5Ojpib3JkZXJCb3goKSBjb25zdAogewogICAgIFJlY3QgYm9yZGVyQm94Owog
ICAgIGJvcmRlckJveC5zZXRUb3BMZWZ0KHsgfSk7Ci0gICAgYm9yZGVyQm94LnNldFNpemUoeyBs
b2dpY2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpIH0pOworICAgIGJvcmRlckJveC5zZXRTaXpl
KHsgYm9yZGVyQm94V2lkdGgoKSwgYm9yZGVyQm94SGVpZ2h0KCkgfSk7CiAgICAgcmV0dXJuIGJv
cmRlckJveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94R2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveEdlb21ldHJ5LmgKaW5kZXggZjc4MWQzNThhODFiNDI4YzFmYzVlMGM4ZmZkYTBm
ZmJmNDJlN2RhMS4uNTQ5NWQ0MjA5ODAxY2VmMzgzNTY0ZTIzNWJjZDNhNGZmNmE3MWU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9t
ZXRyeS5oCkBAIC00MSwyMCArNDEsMTEgQEAgcHVibGljOgogICAgIEJveEdlb21ldHJ5KCkgPSBk
ZWZhdWx0OwogICAgIH5Cb3hHZW9tZXRyeSgpOwogCi0gICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0OwotICAgIExheW91
dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxUb3AoKSArIGxvZ2lj
YWxIZWlnaHQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbG9naWNhbExlZnQoKSArIGxvZ2ljYWxXaWR0aCgpOyB9Ci0KLSAgICBMYXlvdXRQb2ludCBs
b2dpY2FsVG9wTGVmdCgpIGNvbnN0OwotICAgIExheW91dFBvaW50IGxvZ2ljYWxCb3R0b21SaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIHsgbG9naWNhbFJpZ2h0KCksIGxvZ2ljYWxCb3R0b20oKSB9OyB9
Ci0KLSAgICBMYXlvdXRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4geyBsb2dpY2Fs
V2lkdGgoKSwgbG9naWNhbEhlaWdodCgpIH07IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpICsgYm9y
ZGVyUmlnaHQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGJvcmRlclRvcCgpICsgcGFkZGluZ0JveEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCk7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsU2l6ZSgpLmlzRW1wdHko
KTsgfQotICAgIFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiB7IGxvZ2ljYWxUb3Ao
KSwgbG9naWNhbExlZnQoKSwgbG9naWNhbFdpZHRoKCksIGxvZ2ljYWxIZWlnaHQoKSB9OyB9Ci0g
ICAgUmVjdCBsb2dpY2FsUmVjdFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IGxvZ2ljYWxU
b3AoKSAtIG1hcmdpbkJlZm9yZSgpLCBsb2dpY2FsTGVmdCgpIC0gbWFyZ2luU3RhcnQoKSwgbWFy
Z2luU3RhcnQoKSArIGxvZ2ljYWxXaWR0aCgpICsgbWFyZ2luRW5kKCksIG1hcmdpbkJlZm9yZSgp
ICsgbG9naWNhbEhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9CisgICAgc3RhdGljIExheW91
dFVuaXQgYm9yZGVyQm94VG9wKGNvbnN0IEJveEdlb21ldHJ5JiBib3gpIHsgcmV0dXJuIGJveC5s
b2dpY2FsVG9wKCk7IH0KKyAgICBzdGF0aWMgTGF5b3V0VW5pdCBib3JkZXJCb3hMZWZ0KGNvbnN0
IEJveEdlb21ldHJ5JiBib3gpIHsgcmV0dXJuIGJveC5sb2dpY2FsTGVmdCgpOyB9CisgICAgc3Rh
dGljIExheW91dFBvaW50IGJvcmRlckJveFRvcExlZnQoY29uc3QgQm94R2VvbWV0cnkmIGJveCkg
eyByZXR1cm4gYm94LmxvZ2ljYWxUb3BMZWZ0KCk7IH0KKyAgICBzdGF0aWMgUmVjdCBib3JkZXJC
b3hSZWN0KGNvbnN0IEJveEdlb21ldHJ5JiBib3gpIHsgcmV0dXJuIHsgYm94LmxvZ2ljYWxUb3Ao
KSwgYm94LmxvZ2ljYWxMZWZ0KCksIGJveC5ib3JkZXJCb3hXaWR0aCgpLCBib3guYm9yZGVyQm94
SGVpZ2h0KCkgfTsgfQorICAgIHN0YXRpYyBSZWN0IG1hcmdpbkJveFJlY3QoY29uc3QgQm94R2Vv
bWV0cnkmIGJveCkgeyByZXR1cm4geyBib3gubG9naWNhbFRvcCgpIC0gYm94Lm1hcmdpbkJlZm9y
ZSgpLCBib3gubG9naWNhbExlZnQoKSAtIGJveC5tYXJnaW5TdGFydCgpLCBib3gubWFyZ2luQm94
V2lkdGgoKSwgYm94Lm1hcmdpbkJveEhlaWdodCgpIH07IH0KIAogICAgIHN0cnVjdCBWZXJ0aWNh
bE1hcmdpbiB7CiAgICAgICAgIExheW91dFVuaXQgYmVmb3JlOwpAQCAtMTM3LDYgKzEyOCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsK
IAogcHJpdmF0ZToKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdDsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3Q7CisgICAgTGF5b3V0UG9pbnQgbG9naWNhbFRvcExl
ZnQoKSBjb25zdDsKKwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRlTWFy
Z2luKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBlMzlhOGNlMmVlYWNlMzcwNDU0ODgyZmQwNGRkN2Q4
YjUxNzRmZDAxLi4xODJlYmYwNzVkMTE2ZTdlYzgxMTY0ZDA3ZjQzOWFhMDBlZGIxNzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCkBAIC00NjksOCArNDY5LDEwIEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJv
eChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3hHCiAg
ICAgZWxzZQogICAgICAgICBzdHJlYW0gPDwgInVua25vd24gYm94IjsKIAotICAgIGlmIChib3hH
ZW9tZXRyeSkKLSAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgYm94R2VvbWV0cnktPmxvZ2lj
YWxMZWZ0KCkgPDwgIiwiIDw8IGJveEdlb21ldHJ5LT5sb2dpY2FsVG9wKCkgPDwgIikgc2l6ZSAi
IDw8IGJveEdlb21ldHJ5LT5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgYm94R2VvbWV0cnktPmxv
Z2ljYWxIZWlnaHQoKTsKKyAgICBpZiAoYm94R2VvbWV0cnkpIHsKKyAgICAgICAgYXV0byBib3Jk
ZXJCb3ggPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdCgqYm94R2VvbWV0cnkpOworICAgICAg
ICBzdHJlYW0gPDwgIiBhdCAoIiA8PCBib3JkZXJCb3gubGVmdCgpIDw8ICIsIiA8PCBib3JkZXJC
b3gudG9wKCkgPDwgIikgc2l6ZSAiIDw8IGJvcmRlckJveC53aWR0aCgpIDw8ICJ4IiA8PCBib3Jk
ZXJCb3guaGVpZ2h0KCk7CisgICAgfQogICAgIHN0cmVhbSA8PCAiICgiIDw8ICZsYXlvdXRCb3gg
PDwgIikiOwogICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpKSB7CiAgICAgICAg
IGF1dG8gdGV4dENvbnRlbnQgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpLmNv
bnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGUyMDA5ZDI1Y2M0
YzNjNWUzMmE4YmZiMzJjNmJjM2RkM2YxYjQyMDkuLjVkYjllZWM1YzYzMTU3NTgxOTc1ZGVmNmIz
YjFkNWY4ZjExM2MwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjQ1
LDcgKzI0NSw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5
Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIGF1dG8gc2VjdGlv
bkNvbnRlbnRIZWlnaHQgPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgc2l6ZV90IHJvd0NvdW50
ID0gMDsKICAgICAgICAgZm9yIChhdXRvJiByb3dCb3ggOiBjaGlsZHJlbk9mVHlwZTxDb250YWlu
ZXJCb3g+KHNlY3Rpb25Cb3gpKSB7Ci0gICAgICAgICAgICBzZWN0aW9uQ29udGVudEhlaWdodCAr
PSBnZW9tZXRyeUZvckJveChyb3dCb3gpLmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIHNl
Y3Rpb25Db250ZW50SGVpZ2h0ICs9IGdlb21ldHJ5Rm9yQm94KHJvd0JveCkuYm9yZGVyQm94SGVp
Z2h0KCk7CiAgICAgICAgICAgICArK3Jvd0NvdW50OwogICAgICAgICB9CiAgICAgICAgIHNlY3Rp
b25Db250ZW50SGVpZ2h0ICs9IHZlcnRpY2FsU3BhY2luZyAqIChyb3dDb3VudCAtIDEpOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21l
dHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIHNlY3Rpb25C
b3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChjb25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxM
ZWZ0KTsKICAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3AobG9naWNhbFRv
cCk7CiAKLSAgICAgICAgbG9naWNhbFRvcCArPSBzZWN0aW9uQm94R2VvbWV0cnkubG9naWNhbEhl
aWdodCgpOworICAgICAgICBsb2dpY2FsVG9wICs9IHNlY3Rpb25Cb3hHZW9tZXRyeS5ib3JkZXJC
b3hIZWlnaHQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAppbmRleCA2Zjg3YWE3NjIyODU5YTI2ZDBiOGY0YTcyMDY4OGViNTI1YzFm
NDQyLi4wNTlkODg5YmQ4YzM2YTg2ZmIxZTBhZmM2NTNlNmFlMGQ0OTRjZDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC01MCw4ICs1MCw4IEBA
IExheW91dFVuaXQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNlbGxIZWlnaChj
b25zdCBDb250YWluZXJCb3gmIGNlbGxCCiAgICAgICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGRH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGZpcnN0SW5GbG93Q2hp
bGQsIEVzY2FwZVJlYXNvbjo6TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdD
b250ZXh0KTsKICAgICAgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkR2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXN0SW5GbG93Q2hpbGQsIEVzY2FwZVJlYXNvbjo6
TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KTsKIAotICAgICAg
ICBhdXRvIHRvcCA9IGZpcnN0SW5GbG93Q2hpbGQuc3R5bGUoKS5oYXNNYXJnaW5CZWZvcmVRdWly
aygpID8gZmlyc3RJbkZsb3dDaGlsZEdlb21ldHJ5LmxvZ2ljYWxUb3AoKSA6IGZpcnN0SW5GbG93
Q2hpbGRHZW9tZXRyeS5sb2dpY2FsUmVjdFdpdGhNYXJnaW4oKS50b3AoKTsKLSAgICAgICAgYXV0
byBib3R0b20gPSBsYXN0SW5GbG93Q2hpbGQuc3R5bGUoKS5oYXNNYXJnaW5BZnRlclF1aXJrKCkg
PyBsYXN0SW5GbG93Q2hpbGRHZW9tZXRyeS5sb2dpY2FsQm90dG9tKCkgOiBsYXN0SW5GbG93Q2hp
bGRHZW9tZXRyeS5sb2dpY2FsUmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKTsKKyAgICAgICAgYXV0
byB0b3AgPSBmaXJzdEluRmxvd0NoaWxkLnN0eWxlKCkuaGFzTWFyZ2luQmVmb3JlUXVpcmsoKSA/
IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGZpcnN0SW5GbG93Q2hpbGRHZW9tZXRyeSkudG9w
KCkgOiBCb3hHZW9tZXRyeTo6bWFyZ2luQm94UmVjdChmaXJzdEluRmxvd0NoaWxkR2VvbWV0cnkp
LnRvcCgpOworICAgICAgICBhdXRvIGJvdHRvbSA9IGxhc3RJbkZsb3dDaGlsZC5zdHlsZSgpLmhh
c01hcmdpbkFmdGVyUXVpcmsoKSA/IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGxhc3RJbkZs
b3dDaGlsZEdlb21ldHJ5KS5ib3R0b20oKSA6IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGxh
c3RJbkZsb3dDaGlsZEdlb21ldHJ5KS5ib3R0b20oKTsKICAgICAgICAgY29udGVudEhlaWdodCA9
IGJvdHRvbSAtIHRvcDsKICAgICB9IGVsc2UKICAgICAgICAgY29udGVudEhlaWdodCA9IGNvbnRl
bnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY2VsbEJveCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwCmluZGV4
IGNiOGZkNDk0ODk4NDhmZTYzZWQyZTE1NWNhM2Y5ODNiOWVlMTY4NGYuLjIzMzUyYzVhMTdmOGMw
YjNkM2QyNDRlOTI1YTdlZjI0ODE5OGE4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwCkBAIC0yNzksNyArMjc5LDcg
QEAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2Vz
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlQKICAgICAgICAgICAgIC8vIGxpbmVib3ggY29udGFp
bmluZyB0aGUgY2VsbHMgb3JpZ2luYXRpbmcgaW4gdGhlIHJvdy4KICAgICAgICAgICAgIGF1dG8m
IGNlbGwgPSBzbG90LmNlbGwoKTsKICAgICAgICAgICAgIGF1dG8mIGNlbGxCb3ggPSBjZWxsLmJv
eCgpOwotICAgICAgICAgICAgYXV0byBoZWlnaHQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KGNlbGxCb3gpLmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF1dG8gaGVp
Z2h0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChjZWxsQm94KS5ib3JkZXJC
b3hIZWlnaHQoKTsKICAgICAgICAgICAgIGlmIChjZWxsQm94LnN0eWxlKCkudmVydGljYWxBbGln
bigpID09IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lKSB7CiAgICAgICAgICAgICAgICAgbWF4aW11
bUNvbHVtbkFzY2VudCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5Bc2NlbnQsIGNlbGwuYmFzZWxp
bmUoKSk7CiAgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbkRlc2NlbnQgPSBzdGQ6Om1heCht
YXhpbXVtQ29sdW1uRGVzY2VudCwgaGVpZ2h0IC0gY2VsbC5iYXNlbGluZSgpKTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0
ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAogICAgIC8vIERpc3RyaWJ1dGUgZXh0
cmEgc3BhY2UgaWYgdGhlIHRhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHRhbGxlciB0aGFuIHRoZSBz
dW0gb2YgdGhlIHJvdyBoZWlnaHRzLgogICAgIHJldHVybiBkaXN0cmlidXRlQXZhaWxhYmxlU3Bh
Y2U8Um93U3Bhbj4obV9ncmlkLCBhdmFpbGFibGVTcGFjZSwgWyZdIChjb25zdCBUYWJsZUdyaWQ6
OlNsb3QmIHNsb3QsIHNpemVfdCByb3dJbmRleCkgewogICAgICAgICBpZiAoc2xvdC5oYXNSb3dT
cGFuKCkpCi0gICAgICAgICAgICByZXR1cm4gR3JpZFNwYWNlIHsgZm9ybWF0dGluZ0NvbnRleHQo
KS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3goKSkubG9naWNhbEhlaWdodCgpLCBmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KHNsb3QuY2VsbCgpLmJveCgpKS5sb2dpY2Fs
SGVpZ2h0KCkgfTsKKyAgICAgICAgICAgIHJldHVybiBHcmlkU3BhY2UgeyBmb3JtYXR0aW5nQ29u
dGV4dCgpLmdlb21ldHJ5Rm9yQm94KHNsb3QuY2VsbCgpLmJveCgpKS5ib3JkZXJCb3hIZWlnaHQo
KSwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3goKSku
Ym9yZGVyQm94SGVpZ2h0KCkgfTsKICAgICAgICAgYXV0byYgcm93cyA9IG1fZ3JpZC5yb3dzKCk7
CiAgICAgICAgIGF1dG8gY29tcHV0ZWRSb3dIZWlnaHQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5KCkuY29tcHV0ZWRIZWlnaHQocm93cy5saXN0KClbcm93SW5kZXhdLmJveCgpLCB7IH0p
OwogICAgICAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWF4PGZsb2F0Pihyb3dIZWlnaHRbcm93SW5k
ZXhdLCBjb21wdXRlZFJvd0hlaWdodC52YWx1ZU9yKDBfbHUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmluZGV4IGViYzg2NTMyNzc1YWZjYjA0
ODA5N2YxNjE3NzU4ODg0MjkxZDE0NWQuLmY1YzhhNTAwMTBiZDNhZWNiYTJhNjk4YjBjMDcxODIz
NmZjMWQ3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250
ZXh0LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6Omxh
eW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQoKQogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIHJlbmRl
ciB0cmVlIHN0YXRlIHdoZW4gd2UgZG9uJ3QgcnVuIFJlbmRlclZpZXc6OmxheW91dC4KICAgICBp
ZiAocmVuZGVyVmlldy5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIGF1dG8gY29udGVudFNpemUg
PSBtX2xheW91dFN0YXRlLT5nZW9tZXRyeUZvckJveCgqbV9sYXlvdXRTdGF0ZS0+cm9vdCgpLmZp
cnN0Q2hpbGQoKSkubG9naWNhbFNpemUoKTsKKyAgICAgICAgYXV0byBjb250ZW50U2l6ZSA9IExh
eW91dDo6Qm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QobV9sYXlvdXRTdGF0ZS0+Z2VvbWV0cnlG
b3JCb3goKm1fbGF5b3V0U3RhdGUtPnJvb3QoKS5maXJzdENoaWxkKCkpKS5zaXplKCk7CiAgICAg
ICAgIHJlbmRlclZpZXcuc2V0U2l6ZShjb250ZW50U2l6ZSk7CiAgICAgICAgIHJlbmRlclZpZXcu
cmVwYWludFZpZXdSZWN0YW5nbGUoeyAwLCAwLCBjb250ZW50U2l6ZS53aWR0aCgpLCBjb250ZW50
U2l6ZS5oZWlnaHQoKSB9KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>