<?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>205574</bug_id>
          
          <creation_ts>2019-12-23 18:16:43 -0800</creation_ts>
          <short_desc>Minor code cleanup around WebCore::Path</short_desc>
          <delta_ts>2019-12-26 11:01:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andersca</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601346</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-23 18:16:43 -0800</bug_when>
    <thetext>Just some minor code cleanup, before some larger changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601354</commentid>
    <comment_count>1</comment_count>
      <attachid>386369</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-23 19:03:22 -0800</bug_when>
    <thetext>Created attachment 386369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601504</commentid>
    <comment_count>2</comment_count>
      <attachid>386411</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-25 12:22:53 -0800</bug_when>
    <thetext>Created attachment 386411
Make RoundedRectStrategy an enum class too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601527</commentid>
    <comment_count>3</comment_count>
      <attachid>386411</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-26 10:14:29 -0800</bug_when>
    <thetext>Comment on attachment 386411
Make RoundedRectStrategy an enum class too

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601528</commentid>
    <comment_count>4</comment_count>
      <attachid>386411</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-26 11:01:11 -0800</bug_when>
    <thetext>Comment on attachment 386411
Make RoundedRectStrategy an enum class too

Clearing flags on attachment: 386411

Committed r253916: &lt;https://trac.webkit.org/changeset/253916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601529</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-26 11:01:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386369</attachid>
            <date>2019-12-23 19:03:22 -0800</date>
            <delta_ts>2019-12-25 12:22:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205574-20191223190321.patch</filename>
            <type>text/plain</type>
            <size>36266</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YzJiN2ZkZjhiNmZk
YjcwZTNkMjNiZmIxODE1ZTA4ZGFiZDY5Mi4uNTQyYTI2NjczY2U4ZjhmOTNkYTQxMzljMmQ0ZWQ3
Y2QxODI1NGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE5LTEyLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1pbm9yIGNvZGUg
Y2xlYW51cCBhcm91bmQgV2ViQ29yZTo6UGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2Fycnkgb3V0IHNvbWUgbWlub3IgY2hhbmdlcyBpbiBXZWJD
b3JlOjpQYXRoOgorICAgICAgICAtIENoYW5nZSBQYXRoRWxlbWVudFR5cGUgaW50byBhbiA4LWJp
dC13aWRlIGVudW0gY2xhc3MsIGFuZCBtb3ZlIGl0IHVuZGVyIFBhdGhFbGVtZW50J3MgbmFtZXNw
YWNlIGFzIHNpbXBseSBUeXBlLgorICAgICAgICAtIENoYW5nZSBQYXRoRWxlbWVudCdzIGBGbG9h
dFBvaW50KmAgdGhhdCBwb2ludHMgdG8gYW4gYXJyYXkgb2YgMyBGbG9hdFBvaW50cyBpbnRvIGEg
YEZsb2F0UG9pbnRbM11gLgorICAgICAgICAtIENoYW5nZSBQYXRoOjpzdHJva2VDb250YWlucygp
IHRvIHRha2UgYSBgU3Ryb2tlU3R5bGVBcHBsaWVyJmAgaW5zdGVhZCBvZiBhIGBTdHJva2VTdHls
ZUFwcGxpZXIqYCwgc2luY2UgaXQKKyAgICAgICAgICBhc3N1bWVzIHRoYXQgdGhlIGdpdmVuIGBT
dHJva2VTdHlsZUFwcGxpZXJgIGlzIG5vbm51bGwgYW55d2F5cy4KKyAgICAgICAgLSBPdGhlciBt
aXNjZWxsYW5lb3VzIHN0eWxlIGZpeGVzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbToKKyAgICAgICAgKGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzUG9p
bnRJblN0cm9rZUludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3U2hhcGVIaWdobGlnaHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRQYXRoSW50ZXJzZWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFRyYXZl
cnNhbFN0YXRlOjphcHBlbmRQYXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoVHJh
dmVyc2FsU3RhdGU6OnByb2Nlc3NQYXRoRWxlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXRoVHJhdmVy
c2FsU3RhdGU6OnByb2Nlc3NQYXRoRWxlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnN0cm9rZUNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFwcGx5IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0aDo6c3Ryb2tlQ29udGFpbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0dQYXRo
QXBwbGllclRvUGF0aEFwcGxpZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
YXRoRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ryb2tlQ29udGFpbnMg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFp
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRGF0YTo6dXBkYXRlTWFya2VyRGF0YUZvclBhdGhFbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1N1YnBhdGhEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTdWJwYXRoRGF0YTo6dXBkYXRlRnJvbVBhdGhFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAg
ICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU3Ry
aW5nRnJvbVBhdGgpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6cGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMpOgor
CiAyMDE5LTEyLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXUEVdIFNwZWNpYWwgY29tYmluYXRpb24gY2hhcmFjdGVycyBkb2Vz
bid0IHJlc3BlY3QgdGhlIGtleXN0cm9rZSBvcmRlciB3aGVuIGhpZ2ggQ1BVIGxvYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA0ZjliNGQ5ODYzOGZkNTE3
ZTc2YzlhOGYwZmU5ZGY2MGNkOTExY2E2Li43MjQ2OTA2YTg3YjA4MjA5NjgzYTE1NzNmN2JiYzAz
MGZlODllZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBA
IC0zNjcsMjEgKzM2NywyMSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VG
dW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogICAgIENHTXV0YWJs
ZVBhdGhSZWYgbmV3UGF0aCA9IGNvbnZlcnNpb24ucGF0aDsKICAgICBGbG9hdFJlY3QgcmVjdDsK
ICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Q
b2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDoKICAgICB7CiAg
ICAgICAgIHJlY3QgPSBGbG9hdFJlY3QoZWxlbWVudC5wb2ludHNbMF0sIEZsb2F0U2l6ZSgpKTsK
ICAgICAgICAgQ0dQb2ludCBuZXdQb2ludCA9IFt3cmFwcGVyIGNvbnZlcnRSZWN0VG9TcGFjZTpy
ZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl0ub3JpZ2luOwog
ICAgICAgICBDR1BhdGhNb3ZlVG9Qb2ludChuZXdQYXRoLCBuaWwsIG5ld1BvaW50LngsIG5ld1Bv
aW50LnkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXRoRWxlbWVudEFkZExp
bmVUb1BvaW50OgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50Ogog
ICAgIHsKICAgICAgICAgcmVjdCA9IEZsb2F0UmVjdChlbGVtZW50LnBvaW50c1swXSwgRmxvYXRT
aXplKCkpOwogICAgICAgICBDR1BvaW50IG5ld1BvaW50ID0gW3dyYXBwZXIgY29udmVydFJlY3RU
b1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXS5v
cmlnaW47CiAgICAgICAgIENHUGF0aEFkZExpbmVUb1BvaW50KG5ld1BhdGgsIG5pbCwgbmV3UG9p
bnQueCwgbmV3UG9pbnQueSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhdGhF
bGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpB
ZGRRdWFkQ3VydmVUb1BvaW50OgogICAgIHsKICAgICAgICAgcmVjdCA9IEZsb2F0UmVjdChlbGVt
ZW50LnBvaW50c1swXSwgRmxvYXRTaXplKCkpOwogICAgICAgICBDR1BvaW50IG5ld1BvaW50MSA9
IFt3cmFwcGVyIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2U6OlNjcmVlbl0ub3JpZ2luOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyB2
b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYg
Y29udmVyc2lvbiwgY29uCiAgICAgICAgIENHUGF0aEFkZFF1YWRDdXJ2ZVRvUG9pbnQobmV3UGF0
aCwgbmlsLCBuZXdQb2ludDEueCwgbmV3UG9pbnQxLnksIG5ld1BvaW50Mi54LCBuZXdQb2ludDIu
eSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVU
b1BvaW50OgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoKICAg
ICB7CiAgICAgICAgIHJlY3QgPSBGbG9hdFJlY3QoZWxlbWVudC5wb2ludHNbMF0sIEZsb2F0U2l6
ZSgpKTsKICAgICAgICAgQ0dQb2ludCBuZXdQb2ludDEgPSBbd3JhcHBlciBjb252ZXJ0UmVjdFRv
U3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dLm9y
aWdpbjsKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogICAgICAg
ICBDR1BhdGhBZGRDdXJ2ZVRvUG9pbnQobmV3UGF0aCwgbmlsLCBuZXdQb2ludDEueCwgbmV3UG9p
bnQxLnksIG5ld1BvaW50Mi54LCBuZXdQb2ludDIueSwgbmV3UG9pbnQzLngsIG5ld1BvaW50My55
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBh
dGg6CisgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgIHsKICAg
ICAgICAgQ0dQYXRoQ2xvc2VTdWJwYXRoKG5ld1BhdGgpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggM2ZhNmQ4YTQ4M2RiY2Q5MmUyNTQ5YzljYmM5ZTc3MWY0MDJk
ZDUwMy4uYmRiNmNlYTNiNGNlYTllYjNiNmFjZGJjYjQ2NTkzMDFlMTc3NDdmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTEyMTYsNyArMTIxNiw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwg
ZmxvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhbnZhc1N0cm9rZVN0eWxlQXBwbGll
ciBhcHBsaWVyKHRoaXMpOwotICAgIHJldHVybiBwYXRoLnN0cm9rZUNvbnRhaW5zKCZhcHBsaWVy
LCB0cmFuc2Zvcm1lZFBvaW50KTsKKyAgICByZXR1cm4gcGF0aC5zdHJva2VDb250YWlucyhhcHBs
aWVyLCB0cmFuc2Zvcm1lZFBvaW50KTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApp
bmRleCA2NjM4NjU1MTg1NThkMzA1MzQ5ZGFiZjg1MDRhNzEyY2M5OThkNWY3Li42ZWJkZGEzZTJi
MDI2NzQ5MGVhMmJmODE5OGFkYTMxNGZlMDQ4OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0zMTUsMjMgKzMxNSwyMyBAQCBzdGF0aWMg
dm9pZCBkcmF3U2hhcGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlJiBu
b2RlLCBIaWdobGlnaHQ6OgogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgc3dpdGNoIChw
YXRoRWxlbWVudC50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9p
bnQ6CisgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDoKICAg
ICAgICAgICAgICAgICBuZXdQYXRoLm1vdmVUbyhsb2NhbFRvUm9vdCgwKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2lu
dDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50Ogog
ICAgICAgICAgICAgICAgIG5ld1BhdGguYWRkTGluZVRvKGxvY2FsVG9Sb290KDApKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZEN1cnZl
VG9Qb2ludDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Q
b2ludDoKICAgICAgICAgICAgICAgICBuZXdQYXRoLmFkZEJlemllckN1cnZlVG8obG9jYWxUb1Jv
b3QoMCksIGxvY2FsVG9Sb290KDEpLCBsb2NhbFRvUm9vdCgyKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50
OgorICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2lu
dDoKICAgICAgICAgICAgICAgICBuZXdQYXRoLmFkZFF1YWRDdXJ2ZVRvKGxvY2FsVG9Sb290KDAp
LCBsb2NhbFRvUm9vdCgxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAg
IGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CisgICAgICAgICAgICBjYXNlIFBhdGhFbGVt
ZW50OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgbmV3UGF0aC5jbG9zZVN1
YnBhdGgoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA0MTI3
NDdhY2Y4YzkxMThjYzhiNjZiYzExZjEwZTY0NjZmMzM1NjcwLi4xYTZmNzNhODIzOTZlNDAxZDk0
MzdmZWE2MDNjOTBiNmI1MGRjNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0xNzA2LDIzICsxNzA2LDIzIEBAIHN0YXRpYyB2
b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgUGF0aEVsZW1lbnQmCiAgICAgYm9vbCBkb0ludGVyc2VjdGlvbiA9IGZhbHNlOwogICAgIEZs
b2F0UG9pbnQgcG9pbnQgPSBGbG9hdFBvaW50KCk7CiAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUp
IHsKLSAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAgY2FzZSBQYXRoRWxlbWVu
dDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgIHN0YXRlLnN0YXJ0aW5nUG9pbnQgPSBlbGVt
ZW50LnBvaW50c1swXTsKICAgICAgICAgc3RhdGUuY3VycmVudFBvaW50ID0gZWxlbWVudC5wb2lu
dHNbMF07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2lu
dDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDoKICAgICAgICAg
ZG9JbnRlcnNlY3Rpb24gPSB0cnVlOwogICAgICAgICBwb2ludCA9IGVsZW1lbnQucG9pbnRzWzBd
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2lu
dDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OgogICAg
ICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gZWxlbWVudC5wb2lu
dHNbMV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9p
bnQ6CisgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50OgogICAgICAg
ICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gZWxlbWVudC5wb2ludHNb
Ml07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6Cisg
ICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICBkb0ludGVy
c2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gc3RhdGUuc3RhcnRpbmdQb2ludDsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmlu
ZGV4IGEwOTlhZDU3MTJjN2ZjZTUxNDIwM2EyYmVkODVhMDc1NWU1YmVjN2MuLjUzMDQ2YjQ5OTIy
OGQ4YzkwMTRlOTM3NWJhNjViYjU2ZGJhMWQ3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguY3BwCkBAIC0xOTIsMTkgKzE5MiwxOSBAQCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAg
IHN0cmVhbSA8PCAiLCAiOwogICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CiAgICAgICAgIHN3aXRj
aCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDog
Ly8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCisgICAgICAgIGNhc2Ug
UGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxs
IGNvbnRhaW4gMSB2YWx1ZS4KICAgICAgICAgICAgIHN0cmVhbSA8PCAibW92ZSB0byAiIDw8IGVs
ZW1lbnQucG9pbnRzWzBdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVs
ZW1lbnRBZGRMaW5lVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEg
dmFsdWUuCisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50OiAv
LyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KICAgICAgICAgICAgIHN0
cmVhbSA8PCAiYWRkIGxpbmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDogLy8g
VGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgorICAgICAgICBjYXNlIFBh
dGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJl
ciB3aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCiAgICAgICAgICAgICBzdHJlYW0gPDwgImFkZCBxdWFk
IGN1cnZlIHRvICIgPDwgZWxlbWVudC5wb2ludHNbMF0gPDwgIiAiIDw8IGVsZW1lbnQucG9pbnRz
WzFdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2
ZVRvUG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4KKyAg
ICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50OiAvLyBUaGUgcG9p
bnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCiAgICAgICAgICAgICBzdHJlYW0gPDwg
ImFkZCBjdXJ2ZSB0byAiIDw8IGVsZW1lbnQucG9pbnRzWzBdIDw8ICIgIiA8PCBlbGVtZW50LnBv
aW50c1sxXSA8PCAiICIgPDwgZWxlbWVudC5wb2ludHNbMl07CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDogLy8gVGhlIHBvaW50cyBtZW1i
ZXIgd2lsbCBjb250YWluIG5vIHZhbHVlcy4KKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlw
ZTo6Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFs
dWVzLgogICAgICAgICAgICAgc3RyZWFtIDw8ICJjbG9zZSBzdWJwYXRoIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgK
aW5kZXggMWE3NzVlZDdhMDcyNWRmNWQxOTlkMGNhOWRhNGEzM2RiNWQyMjFkNS4uMzczMDdjMTU2
NGQ1N2RhNmNkMDAxMzMyYzljMzIyZTcwNzE3Njg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaApAQCAtOTEsMjAgKzkxLDIwIEBAIGNsYXNzIFBhdGhUcmF2ZXJzYWxT
dGF0ZTsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgU3Ryb2tlU3R5bGVBcHBsaWVyOwogCi1l
bnVtIFBhdGhFbGVtZW50VHlwZSB7Ci0gICAgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludCwgLy8gVGhl
IHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0gICAgUGF0aEVsZW1lbnRBZGRM
aW5lVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0g
ICAgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3
aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCi0gICAgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQsIC8v
IFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4KLSAgICBQYXRoRWxlbWVu
dENsb3NlU3VicGF0aCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFsdWVz
LgotfTsKLQogLy8gVGhlIHBvaW50cyBpbiB0aGUgc3RydWN0dXJlIGFyZSB0aGUgc2FtZSBhcyB0
aG9zZSB0aGF0IHdvdWxkIGJlIHVzZWQgd2l0aCB0aGUKIC8vIGFkZC4uLiBtZXRob2QuIEZvciBl
eGFtcGxlLCBhIGxpbmUgcmV0dXJucyB0aGUgZW5kcG9pbnQsIHdoaWxlIGEgY3ViaWMgcmV0dXJu
cwogLy8gdHdvIHRhbmdlbnQgcG9pbnRzIGFuZCB0aGUgZW5kcG9pbnQuCiBzdHJ1Y3QgUGF0aEVs
ZW1lbnQgewotICAgIFBhdGhFbGVtZW50VHlwZSB0eXBlOwotICAgIEZsb2F0UG9pbnQqIHBvaW50
czsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgTW92ZVRvUG9pbnQs
IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICBBZGRM
aW5lVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCisg
ICAgICAgIEFkZFF1YWRDdXJ2ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29u
dGFpbiAyIHZhbHVlcy4KKyAgICAgICAgQWRkQ3VydmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1l
bWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCisgICAgICAgIENsb3NlU3VicGF0aCAvLyBUaGUg
cG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFsdWVzLgorICAgIH07CisKKyAgICBGbG9h
dFBvaW50IHBvaW50c1szXTsKKyAgICBUeXBlIHR5cGU7CiB9OwogCiB1c2luZyBQYXRoQXBwbGll
ckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFBhdGhFbGVtZW50Jik+OwpAQCAt
MTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGF0aCBwb2x5Z29uUGF0aEZyb21Q
b2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvKSBjb25zdDsKLSAg
ICBib29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdDsKKyAgICBib29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciYs
IGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICAvLyBmYXN0Qm91bmRpbmdSZWN0KCkgc2hv
dWxkIGVxdWFsIG9yIGNvbnRhaW4gYm91bmRpbmdSZWN0KCk7IGJvdW5kaW5nUmVjdCgpCiAgICAg
Ly8gc2hvdWxkIHBlcmZlY3RseSBib3VuZCB0aGUgcG9pbnRzIHdpdGhpbiB0aGUgcGF0aC4KICAg
ICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkgY29uc3Q7CkBAIC0yMzksMjIgKzIzOSwyMiBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0oZWxlbWVudC50eXBlKTsKIAogICAg
ICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92
ZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50Ogog
ICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6CisgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50OgogICAgICAgICAgICAgZW5jb2Rl
ciA8PCBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIGVuY29kZXIgPDwgZWxl
bWVudC5wb2ludHNbMF07CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzFd
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRv
UG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoK
ICAgICAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07CiAgICAgICAgICAgICBl
bmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzFdOwogICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVt
ZW50LnBvaW50c1syXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdGhFbGVt
ZW50Q2xvc2VTdWJwYXRoOgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1
YnBhdGg6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0pOwpAQCAtMjcwLDI2
ICsyNzAsMjYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0aDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcGF0aC5jbGVhcigpOwogCiAgICAgZm9yICh1
aW50NjRfdCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKSB7Ci0gICAgICAgIFBhdGhFbGVtZW50
VHlwZSBlbGVtZW50VHlwZTsKKyAgICAgICAgUGF0aEVsZW1lbnQ6OlR5cGUgZWxlbWVudFR5cGU7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGVsZW1lbnRUeXBlKSkKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgc3dpdGNoIChlbGVtZW50VHlwZSkg
ewotICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6IHsKKyAgICAgICAgY2FzZSBQ
YXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcGF0aC5tb3ZlVG8ocG9p
bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRoRWxl
bWVudEFkZExpbmVUb1BvaW50OiB7CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFk
ZExpbmVUb1BvaW50OiB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvaW50OwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb2ludCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3Vy
dmVUb1BvaW50OiB7CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRDdXJ2
ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50OwogICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMDEsNyArMzAxLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgICAgICBwYXRoLmFkZFF1YWRDdXJ2ZVRvKGNvbnRyb2xQb2ludCwgZW5kUG9pbnQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFk
ZEN1cnZlVG9Qb2ludDogeworICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRDdXJ2
ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50MTsKICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udHJvbFBvaW50MSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTMxNyw3ICszMTcsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjb250cm9sUG9pbnQxLCBjb250cm9s
UG9pbnQyLCBlbmRQb2ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCmluZGV4IDljNTMzOWEy
ZDMwZmE1YzAyMmZiNTcwNDM3OWRlMDQ1ZTQ4MTYxMTAuLjhhNzgyMjI5MGY1YTAxNGM2ZGZkZDI2
NDEwNWVhYjhlMzBmYzljODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjQzLDIyICsyNDMsMjIgQEAg
Ym9vbCBQYXRoVHJhdmVyc2FsU3RhdGU6OmZpbmFsaXplQXBwZW5kUGF0aEVsZW1lbnQoKQogICAg
IHJldHVybiBtX3N1Y2Nlc3M7CiB9CiAKLWJvb2wgUGF0aFRyYXZlcnNhbFN0YXRlOjphcHBlbmRQ
YXRoRWxlbWVudChQYXRoRWxlbWVudFR5cGUgdHlwZSwgY29uc3QgRmxvYXRQb2ludCogcG9pbnRz
KQorYm9vbCBQYXRoVHJhdmVyc2FsU3RhdGU6OmFwcGVuZFBhdGhFbGVtZW50KFBhdGhFbGVtZW50
OjpUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgIG1vdmVUbyhwb2ludHNbMF0pOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6CisgICAgY2Fz
ZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6CiAgICAgICAgIGxpbmVUbyhwb2lu
dHNbMF0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZl
VG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50
OgogICAgICAgICBxdWFkcmF0aWNCZXppZXJUbyhwb2ludHNbMF0sIHBvaW50c1sxXSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6CisgICAgY2Fz
ZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50OgogICAgICAgICBjdWJpY0Jlemll
clRvKHBvaW50c1swXSwgcG9pbnRzWzFdLCBwb2ludHNbMl0pOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5
cGU6OkNsb3NlU3VicGF0aDoKICAgICAgICAgY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIFBhdGhUcmF2ZXJzYWxTdGF0ZTo6YXBw
ZW5kUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UG9pbgogICAg
IHJldHVybiBmaW5hbGl6ZUFwcGVuZFBhdGhFbGVtZW50KCk7CiB9CiAKLWJvb2wgUGF0aFRyYXZl
cnNhbFN0YXRlOjpwcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRUeXBlIHR5cGUsIGNvbnN0
IEZsb2F0UG9pbnQqIHBvaW50cykKK2Jvb2wgUGF0aFRyYXZlcnNhbFN0YXRlOjpwcm9jZXNzUGF0
aEVsZW1lbnQoUGF0aEVsZW1lbnQ6OlR5cGUgdHlwZSwgY29uc3QgRmxvYXRQb2ludCogcG9pbnRz
KQogewogICAgIGlmIChtX3N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaApp
bmRleCBiZDNjMGYxZDJiMGNhNTc4MmZkMmRkMjM0ZWU4N2M0OWNmMGNjMDUwLi4yMjNkZmY0N2Uz
NjJmMjY0NmE1YWZkZjQ2OTRmOGExOWNhOWRkNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlKEFjdGlvbiwgZmxvYXQgZGVzaXJl
ZExlbmd0aCA9IDApOwogCiBwdWJsaWM6Ci0gICAgYm9vbCBwcm9jZXNzUGF0aEVsZW1lbnQoUGF0
aEVsZW1lbnRUeXBlLCBjb25zdCBGbG9hdFBvaW50Kik7CisgICAgYm9vbCBwcm9jZXNzUGF0aEVs
ZW1lbnQoUGF0aEVsZW1lbnQ6OlR5cGUsIGNvbnN0IEZsb2F0UG9pbnQqKTsKICAgICBib29sIHBy
b2Nlc3NQYXRoRWxlbWVudChjb25zdCBQYXRoRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gcHJv
Y2Vzc1BhdGhFbGVtZW50KGVsZW1lbnQudHlwZSwgZWxlbWVudC5wb2ludHMpOyB9CiAKICAgICBB
Y3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KQEAgLTY1LDcgKzY1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGN1YmljQmV6aWVyVG8oY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICBib29sIGZpbmFsaXpl
QXBwZW5kUGF0aEVsZW1lbnQoKTsKLSAgICBib29sIGFwcGVuZFBhdGhFbGVtZW50KFBhdGhFbGVt
ZW50VHlwZSwgY29uc3QgRmxvYXRQb2ludCopOworICAgIGJvb2wgYXBwZW5kUGF0aEVsZW1lbnQo
UGF0aEVsZW1lbnQ6OlR5cGUsIGNvbnN0IEZsb2F0UG9pbnQqKTsKIAogcHJpdmF0ZToKICAgICBB
Y3Rpb24gbV9hY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcAppbmRleCBkYzI4OGIzNWZmYTMzYTQ2NTg4YjA0NDNlZDRh
MzQ3ZGIyZTJjMWZhLi5mMDRmMTkwNTI5M2RiNzAzNTBjMDdjNGYxOTI0ODUyNWMxNzg2MDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhD
YWlyby5jcHAKQEAgLTM5NCwxNiArMzk0LDE1IEBAIGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIFdpbmRSdWxlIHJ1bGUpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRh
aW5zOwogfQogCi1ib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciog
YXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Citib29sIFBhdGg6OnN0cm9r
ZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciYgYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBBU1NFUlQoYXBwbGllcik7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgo
KS0+Y29udGV4dCgpOwogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdjKEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShjcikpOwotICAgICAgICBhcHBsaWVyLT5z
dHJva2VTdHlsZSgmZ2MpOworICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0
KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShjcikpOworICAgICAgICBh
cHBsaWVyLnN0cm9rZVN0eWxlKCZncmFwaGljc0NvbnRleHQpOwogICAgIH0KIAogICAgIHJldHVy
biBjYWlyb19pbl9zdHJva2UoY3IsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKQEAgLTQxNywzMyAr
NDE2LDMxIEBAIHZvaWQgUGF0aDo6YXBwbHkoY29uc3QgUGF0aEFwcGxpZXJGdW5jdGlvbiYgZnVu
Y3Rpb24pIGNvbnN0CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgp
OwogICAgIGF1dG8gcGF0aENvcHkgPSBjYWlyb19jb3B5X3BhdGgoY3IpOwogICAgIGNhaXJvX3Bh
dGhfZGF0YV90KiBkYXRhOwotICAgIFBhdGhFbGVtZW50IHBlbGVtZW50OwotICAgIEZsb2F0UG9p
bnQgcG9pbnRzWzNdOwotICAgIHBlbGVtZW50LnBvaW50cyA9IHBvaW50czsKKyAgICBQYXRoRWxl
bWVudCBwYXRoRWxlbWVudDsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGF0aENvcHktPm51
bV9kYXRhOyBpICs9IHBhdGhDb3B5LT5kYXRhW2ldLmhlYWRlci5sZW5ndGgpIHsKICAgICAgICAg
ZGF0YSA9ICZwYXRoQ29weS0+ZGF0YVtpXTsKICAgICAgICAgc3dpdGNoIChkYXRhLT5oZWFkZXIu
dHlwZSkgewogICAgICAgICBjYXNlIENBSVJPX1BBVEhfTU9WRV9UTzoKLSAgICAgICAgICAgIHBl
bGVtZW50LnR5cGUgPSBQYXRoRWxlbWVudE1vdmVUb1BvaW50OwotICAgICAgICAgICAgcGVsZW1l
bnQucG9pbnRzWzBdID0gRmxvYXRQb2ludChkYXRhWzFdLnBvaW50LngsZGF0YVsxXS5wb2ludC55
KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uKHBlbGVtZW50KTsKKyAgICAgICAgICAgIHBhdGhFbGVt
ZW50LnR5cGUgPSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ7CisgICAgICAgICAgICBw
YXRoRWxlbWVudC5wb2ludHNbMF0gPSBGbG9hdFBvaW50KGRhdGFbMV0ucG9pbnQueCwgZGF0YVsx
XS5wb2ludC55KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHBhdGhFbGVtZW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENBSVJPX1BBVEhfTElORV9UTzoKLSAgICAgICAgICAg
IHBlbGVtZW50LnR5cGUgPSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50OwotICAgICAgICAgICAg
cGVsZW1lbnQucG9pbnRzWzBdID0gRmxvYXRQb2ludChkYXRhWzFdLnBvaW50LngsZGF0YVsxXS5w
b2ludC55KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uKHBlbGVtZW50KTsKKyAgICAgICAgICAgIHBh
dGhFbGVtZW50LnR5cGUgPSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ7CisgICAg
ICAgICAgICBwYXRoRWxlbWVudC5wb2ludHNbMF0gPSBGbG9hdFBvaW50KGRhdGFbMV0ucG9pbnQu
eCwgZGF0YVsxXS5wb2ludC55KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHBhdGhFbGVtZW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENBSVJPX1BBVEhfQ1VSVkVfVE86Ci0g
ICAgICAgICAgICBwZWxlbWVudC50eXBlID0gUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ7Ci0g
ICAgICAgICAgICBwZWxlbWVudC5wb2ludHNbMF0gPSBGbG9hdFBvaW50KGRhdGFbMV0ucG9pbnQu
eCxkYXRhWzFdLnBvaW50LnkpOwotICAgICAgICAgICAgcGVsZW1lbnQucG9pbnRzWzFdID0gRmxv
YXRQb2ludChkYXRhWzJdLnBvaW50LngsZGF0YVsyXS5wb2ludC55KTsKLSAgICAgICAgICAgIHBl
bGVtZW50LnBvaW50c1syXSA9IEZsb2F0UG9pbnQoZGF0YVszXS5wb2ludC54LGRhdGFbM10ucG9p
bnQueSk7Ci0gICAgICAgICAgICBmdW5jdGlvbihwZWxlbWVudCk7CisgICAgICAgICAgICBwYXRo
RWxlbWVudC50eXBlID0gUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDsKKyAgICAg
ICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1swXSA9IEZsb2F0UG9pbnQoZGF0YVsxXS5wb2ludC54
LCBkYXRhWzFdLnBvaW50LnkpOworICAgICAgICAgICAgcGF0aEVsZW1lbnQucG9pbnRzWzFdID0g
RmxvYXRQb2ludChkYXRhWzJdLnBvaW50LngsIGRhdGFbMl0ucG9pbnQueSk7CisgICAgICAgICAg
ICBwYXRoRWxlbWVudC5wb2ludHNbMl0gPSBGbG9hdFBvaW50KGRhdGFbM10ucG9pbnQueCwgZGF0
YVszXS5wb2ludC55KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHBhdGhFbGVtZW50KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENBSVJPX1BBVEhfQ0xPU0VfUEFUSDoKLSAgICAg
ICAgICAgIHBlbGVtZW50LnR5cGUgPSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKHBlbGVtZW50KTsKKyAgICAgICAgICAgIHBhdGhFbGVtZW50LnR5cGUgPSBQ
YXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOworICAgICAgICAgICAgZnVuY3Rpb24ocGF0
aEVsZW1lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAppbmRleCBlNGFlNWQ1
ZGVjYzY5Nzk2M2NiOTE1Njc5NzYwYzMzZTJkNjQ0ZGM2Li4zZDFkNWYxYzBlZTk1N2RiMTIzMDRk
ZTc5MDE3OTQ5ODQ4ZmM4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdGhDRy5jcHAKQEAgLTE4NSwyMSArMTg1LDE5IEBAIGJvb2wgUGF0aDo6Y29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCAmcG9pbnQsIFdpbmRSdWxlIHJ1bGUpIGNvbnN0CiAgICAgcmV0
dXJuIHJldDsKIH0KIAotYm9vbCBQYXRoOjpzdHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcGxp
ZXIqIGFwcGxpZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAorYm9vbCBQYXRoOjpz
dHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcGxpZXImIGFwcGxpZXIsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgQVNTRVJUKGFwcGxpZXIpOwotCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBzY3JhdGNoQ29udGV4dCgpOwogCiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
ICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChj
b250ZXh0LCBwbGF0Zm9ybVBhdGgoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4
dCk7Ci0gICAgYXBwbGllci0+c3Ryb2tlU3R5bGUoJmdjKTsKKyAgICBHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOworICAgIGFwcGxpZXIuc3Ryb2tlU3R5bGUoJmdyYXBo
aWNzQ29udGV4dCk7CiAKICAgICBib29sIGhpdFN1Y2Nlc3MgPSBDR0NvbnRleHRQYXRoQ29udGFp
bnNQb2ludChjb250ZXh0LCBwb2ludCwga0NHUGF0aFN0cm9rZSk7CiAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShjb250ZXh0KTsKQEAgLTQyOSwyOSArNDI3LDI3IEBAIEZsb2F0UG9pbnQgUGF0
aDo6Y3VycmVudFBvaW50KCkgY29uc3QKIHN0YXRpYyB2b2lkIENHUGF0aEFwcGxpZXJUb1BhdGhB
cHBsaWVyKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
Y29uc3QgUGF0aEFwcGxpZXJGdW5jdGlvbiYgZnVuY3Rpb24gPSAqKFBhdGhBcHBsaWVyRnVuY3Rp
b24qKWluZm87Ci0gICAgRmxvYXRQb2ludCBwb2ludHNbM107Ci0gICAgUGF0aEVsZW1lbnQgcGVs
ZW1lbnQ7Ci0gICAgcGVsZW1lbnQudHlwZSA9IChQYXRoRWxlbWVudFR5cGUpZWxlbWVudC0+dHlw
ZTsKLSAgICBwZWxlbWVudC5wb2ludHMgPSBwb2ludHM7CisgICAgUGF0aEVsZW1lbnQgcGF0aEVs
ZW1lbnQ7CisgICAgcGF0aEVsZW1lbnQudHlwZSA9IChQYXRoRWxlbWVudDo6VHlwZSllbGVtZW50
LT50eXBlOwogICAgIENHUG9pbnQqIGNnUG9pbnRzID0gZWxlbWVudC0+cG9pbnRzOwogICAgIHN3
aXRjaCAoZWxlbWVudC0+dHlwZSkgewogICAgIGNhc2Uga0NHUGF0aEVsZW1lbnRNb3ZlVG9Qb2lu
dDoKICAgICBjYXNlIGtDR1BhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6Ci0gICAgICAgIHBvaW50
c1swXSA9IGNnUG9pbnRzWzBdOworICAgICAgICBwYXRoRWxlbWVudC5wb2ludHNbMF0gPSBjZ1Bv
aW50c1swXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dQYXRoRWxlbWVudEFkZFF1YWRD
dXJ2ZVRvUG9pbnQ6Ci0gICAgICAgIHBvaW50c1swXSA9IGNnUG9pbnRzWzBdOwotICAgICAgICBw
b2ludHNbMV0gPSBjZ1BvaW50c1sxXTsKKyAgICAgICAgcGF0aEVsZW1lbnQucG9pbnRzWzBdID0g
Y2dQb2ludHNbMF07CisgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1sxXSA9IGNnUG9pbnRzWzFd
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDR1BhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50
OgotICAgICAgICBwb2ludHNbMF0gPSBjZ1BvaW50c1swXTsKLSAgICAgICAgcG9pbnRzWzFdID0g
Y2dQb2ludHNbMV07Ci0gICAgICAgIHBvaW50c1syXSA9IGNnUG9pbnRzWzJdOworICAgICAgICBw
YXRoRWxlbWVudC5wb2ludHNbMF0gPSBjZ1BvaW50c1swXTsKKyAgICAgICAgcGF0aEVsZW1lbnQu
cG9pbnRzWzFdID0gY2dQb2ludHNbMV07CisgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1syXSA9
IGNnUG9pbnRzWzJdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDR1BhdGhFbGVtZW50Q2xv
c2VTdWJwYXRoOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZnVuY3Rpb24ocGVsZW1lbnQp
OworICAgIGZ1bmN0aW9uKHBhdGhFbGVtZW50KTsKIH0KIAogdm9pZCBQYXRoOjphcHBseShjb25z
dCBQYXRoQXBwbGllckZ1bmN0aW9uJiBmdW5jdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKaW5kZXggYWE2
OWVmMzQ0ZDE2ZWVkNTMxMzdiM2QyNGU0M2FhNGQxYjFlZjU3OC4uODFhYjZhMmM5MDc4YTNiNTI2
NjhmOTQxOTExOWYyOWRmZmU2NGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKQEAgLTIyNSwxNiArMjI1LDE0IEBA
IGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFdpbmRSdWxlIHJ1
bGUpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5zOwogfQogCi1ib29sIFBhdGg6OnN0cm9rZUNv
bnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpIGNvbnN0Citib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciYg
YXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoYXBwbGllcik7Ci0KICAg
ICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCBzY3JhdGNoQ29udGV4dEQyRChzY3JhdGNoUmVuZGVy
VGFyZ2V0KCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBzY3JhdGNoQ29udGV4dCgmc2NyYXRjaENv
bnRleHREMkQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSk7Ci0gICAgYXBwbGllci0+c3Ryb2tlU3R5bGUoJnNjcmF0Y2hDb250ZXh0KTsKKyAg
ICBhcHBsaWVyLnN0cm9rZVN0eWxlKCZzY3JhdGNoQ29udGV4dCk7CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgdW5zaWduZWQgYmVmb3JlID0gcmVmQ291bnQobV9wYXRoLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXgg
N2Q4ODYxYWVjMDFlYTM3MjBiOTVkNTNmZjVlNWQwODBiNzQ3NmU3Mi4uODQzOGVkYWFlMzBiOTUw
MTYwYjNiMWVlYzVjZDNmYTMxODI5Yjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTEyMCwxMCArMTIwLDEwIEBAIGJvb2wgUmVu
ZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIFBvaW50CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nVHJhbnNm
b3JtID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpOwogICAgICAgICBQYXRoKiB1c2VQYXRo
ID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5nVHJhbnNmb3Jt
KTsKIAotICAgICAgICByZXR1cm4gdXNlUGF0aC0+c3Ryb2tlQ29udGFpbnMoJmFwcGxpZXIsIG5v
blNjYWxpbmdUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQpKTsKKyAgICAgICAgcmV0dXJuIHVzZVBh
dGgtPnN0cm9rZUNvbnRhaW5zKGFwcGxpZXIsIG5vblNjYWxpbmdUcmFuc2Zvcm0ubWFwUG9pbnQo
cG9pbnQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXRoLT5zdHJva2VDb250YWlucygmYXBw
bGllciwgcG9pbnQpOworICAgIHJldHVybiBtX3BhdGgtPnN0cm9rZUNvbnRhaW5zKGFwcGxpZXIs
IHBvaW50KTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRGaWxsQ29u
dGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFdpbmRSdWxlIGZpbGxSdWxlKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaAppbmRl
eCA1M2RhMzcxZjcyYzEyODY1N2FhZTg0NjFjOWM2Nzk0ODEzNDkzNjUzLi42ZjViMTRiMGM0NTE2
YTRkOTBkNzUwNGMxYTBlOGNlZmM5Zjk2MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR01hcmtlckRhdGEuaApAQCAtMTExLDI2ICsxMTEsMjYgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdXBkYXRlTWFya2VyRGF0YUZvclBhdGhFbGVtZW50KGNvbnN0IFBhdGhFbGVtZW50
JiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgRmxvYXRQb2ludCogcG9pbnRzID0gZWxlbWVudC5w
b2ludHM7CisgICAgICAgIGF1dG8mIHBvaW50cyA9IGVsZW1lbnQucG9pbnRzOwogCiAgICAgICAg
IHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFk
Q3VydmVUb1BvaW50OgotICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzExNSAoUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50
IG5vdCBoYW5kbGVkIGZvciA8bWFya2VyPikKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlw
ZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxMTUgKFBhdGhFbGVtZW50OjpUeXBlOjpB
ZGRRdWFkQ3VydmVUb1BvaW50IG5vdCBoYW5kbGVkIGZvciA8bWFya2VyPikKICAgICAgICAgICAg
IG1fb3JpZ2luID0gcG9pbnRzWzFdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
UGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5
cGU6OkFkZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIG1faW5zbG9wZVBvaW50c1swXSA9IHBv
aW50c1sxXTsKICAgICAgICAgICAgIG1faW5zbG9wZVBvaW50c1sxXSA9IHBvaW50c1syXTsKICAg
ICAgICAgICAgIG1fb3JpZ2luID0gcG9pbnRzWzJdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgICAgICBtX3N1YnBhdGhTdGFydCA9IHBvaW50
c1swXTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIFBhdGhFbGVtZW50
QWRkTGluZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExpbmVU
b1BvaW50OgogICAgICAgICAgICAgdXBkYXRlSW5zbG9wZShwb2ludHNbMF0pOwogICAgICAgICAg
ICAgbV9vcmlnaW4gPSBwb2ludHNbMF07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlw
ZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICAgICAgdXBkYXRlSW5zbG9wZShwb2ludHNbMF0pOwog
ICAgICAgICAgICAgbV9vcmlnaW4gPSBtX3N1YnBhdGhTdGFydDsKICAgICAgICAgICAgIG1fc3Vi
cGF0aFN0YXJ0ID0gRmxvYXRQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdTdWJwYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdTdWJwYXRoRGF0YS5oCmluZGV4IDBmZmJlZWQ5YzQ4YzE0MWQwOGViZmZmNTU4YjdlN2Qw
Zjc2YWM4NGYuLjhjNzIyMzQwODAwNTkzYWE5NDhhYjgwMTRjNDMxNjZkZTlkMDBjMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU3VicGF0aERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1N1YnBhdGhEYXRhLmgKQEAgLTM0LDM1
ICszNCwzNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlRnJvbVBhdGhFbGVtZW50
KFNWR1N1YnBhdGhEYXRhJiBzdWJwYXRoRmluZGVyLCBjb25zdCBQYXRoRWxlbWVudCYgZWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2Ug
UGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6
TW92ZVRvUG9pbnQ6CiAgICAgICAgICAgICBpZiAoc3VicGF0aEZpbmRlci5tX3BhdGhJc1plcm9M
ZW5ndGggJiYgIXN1YnBhdGhGaW5kZXIubV9oYXZlU2Vlbk1vdmVPbmx5KQogICAgICAgICAgICAg
ICAgIHN1YnBhdGhGaW5kZXIubV96ZXJvTGVuZ3RoU3VicGF0aExvY2F0aW9ucy5hcHBlbmQoc3Vi
cGF0aEZpbmRlci5tX2xhc3RQb2ludCk7CiAgICAgICAgICAgICBzdWJwYXRoRmluZGVyLm1fbGFz
dFBvaW50ID0gc3VicGF0aEZpbmRlci5tX21vdmVQb2ludCA9IGVsZW1lbnQucG9pbnRzWzBdOwog
ICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2hhdmVTZWVuTW92ZU9ubHkgPSB0cnVlOwogICAg
ICAgICAgICAgc3VicGF0aEZpbmRlci5tX3BhdGhJc1plcm9MZW5ndGggPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDoKKyAg
ICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6CiAgICAgICAgICAg
ICBpZiAoc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCAhPSBlbGVtZW50LnBvaW50c1swXSkgewog
ICAgICAgICAgICAgICAgIHN1YnBhdGhGaW5kZXIubV9wYXRoSXNaZXJvTGVuZ3RoID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCA9IGVsZW1lbnQucG9p
bnRzWzBdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2hhdmVT
ZWVuTW92ZU9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBh
dGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6
VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIGlmIChzdWJwYXRoRmluZGVy
Lm1fbGFzdFBvaW50ICE9IGVsZW1lbnQucG9pbnRzWzBdIHx8IGVsZW1lbnQucG9pbnRzWzBdICE9
IGVsZW1lbnQucG9pbnRzWzFdKSB7CiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX3Bh
dGhJc1plcm9MZW5ndGggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBzdWJwYXRoRmluZGVyLm1f
bGFzdFBvaW50ID0gZWxlbWVudC5wb2ludHNbMV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzdWJwYXRoRmluZGVyLm1faGF2ZVNlZW5Nb3ZlT25seSA9IGZhbHNlOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6CisgICAgICAg
IGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIGlm
IChzdWJwYXRoRmluZGVyLm1fbGFzdFBvaW50ICE9IGVsZW1lbnQucG9pbnRzWzBdIHx8IGVsZW1l
bnQucG9pbnRzWzBdICE9IGVsZW1lbnQucG9pbnRzWzFdIHx8IGVsZW1lbnQucG9pbnRzWzFdICE9
IGVsZW1lbnQucG9pbnRzWzJdKSB7CiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX3Bh
dGhJc1plcm9MZW5ndGggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBzdWJwYXRoRmluZGVyLm1f
bGFzdFBvaW50ID0gZWxlbWVudC5wb2ludHNbMl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzdWJwYXRoRmluZGVyLm1faGF2ZVNlZW5Nb3ZlT25seSA9IGZhbHNlOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CisgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkNsb3NlU3VicGF0aDoKICAgICAgICAgICAgIGlmIChzdWJw
YXRoRmluZGVyLm1fcGF0aElzWmVyb0xlbmd0aCkKICAgICAgICAgICAgICAgICBzdWJwYXRoRmlu
ZGVyLm1femVyb0xlbmd0aFN1YnBhdGhMb2NhdGlvbnMuYXBwZW5kKHN1YnBhdGhGaW5kZXIubV9s
YXN0UG9pbnQpOwogICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2hhdmVTZWVuTW92ZU9ubHkg
PSB0cnVlOyAvLyBUaGlzIGlzIGFuIGltcGxpY2l0IG1vdmUgZm9yIHRoZSBuZXh0IGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
LmNwcAppbmRleCBkZTFhMGNhYzk1YjkzOTFmNTJkYzYyZmFhNjgxYzY1NzU1ODViZmUzLi42Yzg0
ODIzZDg1M2JkODQ2N2I1NTA5MGE0NzljMDQ0ZDk1YjhiMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCkBAIC0zNiwyNCAr
MzYsMjQgQEAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6U1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlcihQYXRoVHJhdmVyc2FsU3RhdGUmIHMKIAogdm9pZCBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2ws
IFBhdGhDb29yZGluYXRlTW9kZSkKIHsKLSAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQYXRo
RWxlbWVudChQYXRoRWxlbWVudE1vdmVUb1BvaW50LCAmdGFyZ2V0UG9pbnQpOworICAgIG1fdHJh
dmVyc2FsU3RhdGUucHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Q
b2ludCwgJnRhcmdldFBvaW50KTsKIH0KIAogdm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRl
TW9kZSkKIHsKLSAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxl
bWVudEFkZExpbmVUb1BvaW50LCAmdGFyZ2V0UG9pbnQpOworICAgIG1fdHJhdmVyc2FsU3RhdGUu
cHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludCwgJnRh
cmdldFBvaW50KTsKIH0KIAogdm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2
ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dDIsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCiB7
CiAgICAgRmxvYXRQb2ludCBwb2ludHNbXSA9IHsgcG9pbnQxLCBwb2ludDIsIHRhcmdldFBvaW50
IH07CiAKLSAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVu
dEFkZEN1cnZlVG9Qb2ludCwgcG9pbnRzKTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQ
YXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50LCBwb2ludHMpOwog
fQogCiB2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0g
ICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRDbG9zZVN1
YnBhdGgsIG51bGxwdHIpOworICAgIG1fdHJhdmVyc2FsU3RhdGUucHJvY2Vzc1BhdGhFbGVtZW50
KFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1YnBhdGgsIG51bGxwdHIpOwogfQogCiBib29sIFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNvbnRpbnVlQ29uc3VtaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAppbmRleCBiMTk3ZDViYWFjMGE0NDZmOWE2MzFj
N2I3ZjFhNjZjMTBlNzRkOTMzLi5kZDBmOTIyZDRlNWQ1M2Y5Y2IwZWU0Mjc4OGY2ZmJkYzY1YTNl
MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC01OCwxOSAr
NTgsMTkgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAg
ICBpZiAoIXBhdGguaXNOdWxsKCkgJiYgIXBhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgIHBhdGgu
YXBwbHkoWyZidWlsZGVyXSAoY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAg
ICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50
TW92ZVRvUG9pbnQ6CisgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Q
b2ludDoKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnTScpOwogICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50OgorICAgICAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ0wnKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5w
b2ludHNbMF0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
UGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50OgorICAgICAgICAgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnUScpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1l
bnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
QEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1Bv
aW50OgorICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50
OgogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdDJyk7CiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgpKTsKICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgYnVpbGRT
dHJpbmdGcm9tUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMl0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CisgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1on
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBlNWQ1MTM5MzlhM2M5NjE1ZmI0ZGM2NTVhM2Y3MzFkNjdk
MGJkZThjLi42ZmIxYzQ1NDAxMzBkNmZjZDNlOTMyNzgxNWFlYTEwYTBhZGExOTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00NDE4LDE5ICs0NDE4LDE5IEBAIEV4Y2Vw
dGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpwYXRoU3RyaW5nV2l0aFNocmlua1dyYXBwZWRSZWN0
cyhjb25zdCBWZWN0b3I8ZG91CiAgICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0cyhyZWN0cywgcmFkaXVz
KS5hcHBseShbJmJ1aWxkZXJdKGNvbnN0IFBhdGhFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAg
IHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Q
b2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAg
ICAgICAgICBidWlsZGVyLm1vdmVUbyhlbGVtZW50LnBvaW50c1swXSwgZmFsc2UsIEFic29sdXRl
Q29vcmRpbmF0ZXMpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFBhdGhFbGVt
ZW50QWRkTGluZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExp
bmVUb1BvaW50OgogICAgICAgICAgICAgYnVpbGRlci5saW5lVG8oZWxlbWVudC5wb2ludHNbMF0s
IEFic29sdXRlQ29vcmRpbmF0ZXMpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNl
IFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIGJ1aWxkZXIuY3VydmVU
b1F1YWRyYXRpYyhlbGVtZW50LnBvaW50c1swXSwgZWxlbWVudC5wb2ludHNbMV0sIEFic29sdXRl
Q29vcmRpbmF0ZXMpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFBhdGhFbGVt
ZW50QWRkQ3VydmVUb1BvaW50OgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRD
dXJ2ZVRvUG9pbnQ6CiAgICAgICAgICAgICBidWlsZGVyLmN1cnZlVG9DdWJpYyhlbGVtZW50LnBv
aW50c1swXSwgZWxlbWVudC5wb2ludHNbMV0sIGVsZW1lbnQucG9pbnRzWzJdLCBBYnNvbHV0ZUNv
b3JkaW5hdGVzKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dENsb3NlU3VicGF0aDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJw
YXRoOgogICAgICAgICAgICAgYnVpbGRlci5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386411</attachid>
            <date>2019-12-25 12:22:53 -0800</date>
            <delta_ts>2019-12-26 11:01:11 -0800</delta_ts>
            <desc>Make RoundedRectStrategy an enum class too</desc>
            <filename>bug-205574-20191225122252.patch</filename>
            <type>text/plain</type>
            <size>41037</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwNTFlODliZWNlOTA4
MGU4NGM5ODJkMjg4NTU3ZjExOTI5M2IxOC4uMDcwZmRlN2I5M2ZhZTMzYTM3YzY1NzA3NzcxODA0
NzU1ZDExYzEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE5LTEyLTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1pbm9yIGNvZGUg
Y2xlYW51cCBhcm91bmQgV2ViQ29yZTo6UGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2Fycnkgb3V0IHNvbWUgbWlub3IgcmVmYWN0b3JpbmcgaW4g
V2ViQ29yZTo6UGF0aDoKKyAgICAgICAgLSBDaGFuZ2UgUGF0aEVsZW1lbnRUeXBlIGludG8gYW4g
OC1iaXQtd2lkZSBlbnVtIGNsYXNzLCBhbmQgbW92ZSBpdCB1bmRlciBQYXRoRWxlbWVudCdzIG5h
bWVzcGFjZSBhcyBzaW1wbHkgVHlwZS4KKyAgICAgICAgLSBDaGFuZ2UgUGF0aEVsZW1lbnQncyBg
RmxvYXRQb2ludCpgIHRoYXQgcG9pbnRzIHRvIGFuIGFycmF5IG9mIDMgRmxvYXRQb2ludHMgaW50
byBhIGBGbG9hdFBvaW50WzNdYC4KKyAgICAgICAgLSBDaGFuZ2UgUGF0aDo6c3Ryb2tlQ29udGFp
bnMoKSB0byB0YWtlIGEgYFN0cm9rZVN0eWxlQXBwbGllciZgIGluc3RlYWQgb2YgYSBgU3Ryb2tl
U3R5bGVBcHBsaWVyKmAsIHNpbmNlIGl0CisgICAgICAgICAgYXNzdW1lcyB0aGF0IHRoZSBnaXZl
biBgU3Ryb2tlU3R5bGVBcHBsaWVyYCBpcyBub25udWxsIGFueXdheXMuCisgICAgICAgIC0gQ2hh
bmdlIFBhdGg6OlJvdW5kZWRSZWN0U3RyYXRlZ3kgaW50byBhbiA4LWJpdCBlbnVtIGNsYXNzLgor
ICAgICAgICAtIE90aGVyIG1pc2NlbGxhbmVvdXMgc3R5bGUgZml4ZXMuCisKKyAgICAgICAgTm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoY29udmVydFBhdGhUb1Nj
cmVlblNwYWNlRnVuY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTaGFwZUhpZ2hs
aWdodCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZmluZFBhdGhJbnRlcnNlY3Rpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoVHJh
dmVyc2FsU3RhdGU6OmFwcGVuZFBhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGhU
cmF2ZXJzYWxTdGF0ZTo6cHJvY2Vzc1BhdGhFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ryb2tlQ29u
dGFpbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXRoOjpzdHJva2VDb250YWlucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDR1BhdGhB
cHBsaWVyVG9QYXRoQXBwbGllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dGhEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCb3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVjdGFuZ2xlU2hhcGU6OmJ1aWxkRGlzcGxheVBhdGhzIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1NoYXBlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR01hcmtlckRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckRhdGE6
OnVwZGF0ZU1hcmtlckRhdGFGb3JQYXRoRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdQYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbVJlY3RFbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1N1YnBhdGhEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdWJwYXRoRGF0YTo6dXBkYXRlRnJvbVBhdGhFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
U3RyaW5nRnJvbVBhdGgpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6cGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMp
OgorCiAyMDE5LTEyLTI1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bUGFpbnRpbmddIEZpeCBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93aGl0ZS1zcGFjZS90YWItc3RvcC10aHJlc2hvbGQtMDAx
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA0Zjli
NGQ5ODYzOGZkNTE3ZTc2YzlhOGYwZmU5ZGY2MGNkOTExY2E2Li43MjQ2OTA2YTg3YjA4MjA5Njgz
YTE1NzNmN2JiYzAzMGZlODllZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLm1tCkBAIC0zNjcsMjEgKzM2NywyMSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRv
U2NyZWVuU3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgog
ICAgIENHTXV0YWJsZVBhdGhSZWYgbmV3UGF0aCA9IGNvbnZlcnNpb24ucGF0aDsKICAgICBGbG9h
dFJlY3QgcmVjdDsKICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgIGNhc2UgUGF0aEVs
ZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2lu
dDoKICAgICB7CiAgICAgICAgIHJlY3QgPSBGbG9hdFJlY3QoZWxlbWVudC5wb2ludHNbMF0sIEZs
b2F0U2l6ZSgpKTsKICAgICAgICAgQ0dQb2ludCBuZXdQb2ludCA9IFt3cmFwcGVyIGNvbnZlcnRS
ZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVl
bl0ub3JpZ2luOwogICAgICAgICBDR1BhdGhNb3ZlVG9Qb2ludChuZXdQYXRoLCBuaWwsIG5ld1Bv
aW50LngsIG5ld1BvaW50LnkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXRo
RWxlbWVudEFkZExpbmVUb1BvaW50OgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExp
bmVUb1BvaW50OgogICAgIHsKICAgICAgICAgcmVjdCA9IEZsb2F0UmVjdChlbGVtZW50LnBvaW50
c1swXSwgRmxvYXRTaXplKCkpOwogICAgICAgICBDR1BvaW50IG5ld1BvaW50ID0gW3dyYXBwZXIg
Y29udmVydFJlY3RUb1NwYWNlOnJlY3Qgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFj
ZTo6U2NyZWVuXS5vcmlnaW47CiAgICAgICAgIENHUGF0aEFkZExpbmVUb1BvaW50KG5ld1BhdGgs
IG5pbCwgbmV3UG9pbnQueCwgbmV3UG9pbnQueSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVt
ZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OgogICAgIHsKICAgICAgICAgcmVjdCA9IEZs
b2F0UmVjdChlbGVtZW50LnBvaW50c1swXSwgRmxvYXRTaXplKCkpOwogICAgICAgICBDR1BvaW50
IG5ld1BvaW50MSA9IFt3cmFwcGVyIGNvbnZlcnRSZWN0VG9TcGFjZTpyZWN0IHNwYWNlOkFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl0ub3JpZ2luOwpAQCAtMzkxLDcgKzM5MSw3
IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252
ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAgICAgICAgIENHUGF0aEFkZFF1YWRDdXJ2ZVRv
UG9pbnQobmV3UGF0aCwgbmlsLCBuZXdQb2ludDEueCwgbmV3UG9pbnQxLnksIG5ld1BvaW50Mi54
LCBuZXdQb2ludDIueSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBhdGhFbGVt
ZW50QWRkQ3VydmVUb1BvaW50OgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZl
VG9Qb2ludDoKICAgICB7CiAgICAgICAgIHJlY3QgPSBGbG9hdFJlY3QoZWxlbWVudC5wb2ludHNb
MF0sIEZsb2F0U2l6ZSgpKTsKICAgICAgICAgQ0dQb2ludCBuZXdQb2ludDEgPSBbd3JhcHBlciBj
b252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNl
OjpTY3JlZW5dLm9yaWdpbjsKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0
UGF0aFRvU2NyZWVuU3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24s
IGNvbgogICAgICAgICBDR1BhdGhBZGRDdXJ2ZVRvUG9pbnQobmV3UGF0aCwgbmlsLCBuZXdQb2lu
dDEueCwgbmV3UG9pbnQxLnksIG5ld1BvaW50Mi54LCBuZXdQb2ludDIueSwgbmV3UG9pbnQzLngs
IG5ld1BvaW50My55KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUGF0aEVsZW1l
bnRDbG9zZVN1YnBhdGg6CisgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRo
OgogICAgIHsKICAgICAgICAgQ0dQYXRoQ2xvc2VTdWJwYXRoKG5ld1BhdGgpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggZGJiMjEzZGUxM2Y1OTczNTQyMjk3YTMz
NzYyZTc4NmZhZTRhNGRhMS4uNzcxYWFkYzFjOTc1NTgzYmYxYjJmMmU2ODkwZWZmNWQ1MmM0YTk0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTEyMTcsNyArMTIxNyw3IEBAIGJvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3Qg
UGF0aCYgcGF0aCwgZmxvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENhbnZhc1N0cm9r
ZVN0eWxlQXBwbGllciBhcHBsaWVyKHRoaXMpOwotICAgIHJldHVybiBwYXRoLnN0cm9rZUNvbnRh
aW5zKCZhcHBsaWVyLCB0cmFuc2Zvcm1lZFBvaW50KTsKKyAgICByZXR1cm4gcGF0aC5zdHJva2VD
b250YWlucyhhcHBsaWVyLCB0cmFuc2Zvcm1lZFBvaW50KTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcAppbmRleCA2NjM4NjU1MTg1NThkMzA1MzQ5ZGFiZjg1MDRhNzEyY2M5OThkNWY3
Li42ZWJkZGEzZTJiMDI2NzQ5MGVhMmJmODE5OGFkYTMxNGZlMDQ4OTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0zMTUsMjMgKzMxNSwy
MyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhcGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBOb2RlJiBub2RlLCBIaWdobGlnaHQ6OgogICAgICAgICAgICAgfTsKIAogICAgICAgICAg
ICAgc3dpdGNoIChwYXRoRWxlbWVudC50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVt
ZW50TW92ZVRvUG9pbnQ6CisgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3Zl
VG9Qb2ludDoKICAgICAgICAgICAgICAgICBuZXdQYXRoLm1vdmVUbyhsb2NhbFRvUm9vdCgwKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRB
ZGRMaW5lVG9Qb2ludDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZExp
bmVUb1BvaW50OgogICAgICAgICAgICAgICAgIG5ld1BhdGguYWRkTGluZVRvKGxvY2FsVG9Sb290
KDApKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXRoRWxl
bWVudEFkZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6
OkFkZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgICAgICBuZXdQYXRoLmFkZEJlemllckN1cnZl
VG8obG9jYWxUb1Jvb3QoMCksIGxvY2FsVG9Sb290KDEpLCBsb2NhbFRvUm9vdCgyKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFk
Q3VydmVUb1BvaW50OgorICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkUXVh
ZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgICAgICBuZXdQYXRoLmFkZFF1YWRDdXJ2ZVRvKGxv
Y2FsVG9Sb290KDApLCBsb2NhbFRvUm9vdCgxKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CisgICAgICAgICAgICBj
YXNlIFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICAgICAgbmV3
UGF0aC5jbG9zZVN1YnBhdGgoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cAppbmRleCA0MTI3NDdhY2Y4YzkxMThjYzhiNjZiYzExZjEwZTY0NjZmMzM1NjcwLi4xYTZmNzNh
ODIzOTZlNDAxZDk0MzdmZWE2MDNjOTBiNmI1MGRjNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0xNzA2LDIzICsxNzA2LDIz
IEBAIHN0YXRpYyB2b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJhdGlvblN0YXRl
JiBzdGF0ZSwgY29uc3QgUGF0aEVsZW1lbnQmCiAgICAgYm9vbCBkb0ludGVyc2VjdGlvbiA9IGZh
bHNlOwogICAgIEZsb2F0UG9pbnQgcG9pbnQgPSBGbG9hdFBvaW50KCk7CiAgICAgc3dpdGNoIChl
bGVtZW50LnR5cGUpIHsKLSAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAgY2Fz
ZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgIHN0YXRlLnN0YXJ0aW5n
UG9pbnQgPSBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgc3RhdGUuY3VycmVudFBvaW50ID0g
ZWxlbWVudC5wb2ludHNbMF07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRB
ZGRMaW5lVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2lu
dDoKICAgICAgICAgZG9JbnRlcnNlY3Rpb24gPSB0cnVlOwogICAgICAgICBwb2ludCA9IGVsZW1l
bnQucG9pbnRzWzBdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVh
ZEN1cnZlVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVU
b1BvaW50OgogICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0g
ZWxlbWVudC5wb2ludHNbMV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRB
ZGRDdXJ2ZVRvUG9pbnQ6CisgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1Bv
aW50OgogICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gZWxl
bWVudC5wb2ludHNbMl07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9z
ZVN1YnBhdGg6CisgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAg
ICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgIHBvaW50ID0gc3RhdGUuc3RhcnRp
bmdQb2ludDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwCmluZGV4IGEwOTlhZDU3MTJjN2ZjZTUxNDIwM2EyYmVkODVhMDc1NWU1YmVjN2Mu
LmI0MjVmNzM1YTYyMzgyZmQxZDAwMGRmNTQwOWU2OTgyYWEzNzU0NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQ
YXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByLCBSb3VuZGVkUmVj
dFN0cmF0ZWd5IHN0cmF0ZWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzdHJh
dGVneSA9PSBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCkgeworICAgIGlmIChzdHJhdGVneSA9PSBS
b3VuZGVkUmVjdFN0cmF0ZWd5OjpQcmVmZXJOYXRpdmUpIHsKICNpZiBVU0UoQ0cpIHx8IFVTRShE
SVJFQ1QyRCkKICAgICAgICAgcGxhdGZvcm1BZGRQYXRoRm9yUm91bmRlZFJlY3QocmVjdCwgcmFk
aWkudG9wTGVmdCgpLCByYWRpaS50b3BSaWdodCgpLCByYWRpaS5ib3R0b21MZWZ0KCksIHJhZGlp
LmJvdHRvbVJpZ2h0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xOTIsMTkgKzE5MiwxOSBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgUGF0aCYgcGF0
aCkKICAgICAgICAgICAgIHN0cmVhbSA8PCAiLCAiOwogICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7
CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1l
bnRNb3ZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUu
CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OiAvLyBUaGUgcG9p
bnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KICAgICAgICAgICAgIHN0cmVhbSA8PCAi
bW92ZSB0byAiIDw8IGVsZW1lbnQucG9pbnRzWzBdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIg
d2lsbCBjb250YWluIDEgdmFsdWUuCisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFk
ZExpbmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4K
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiYWRkIGxpbmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1sw
XTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1
cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgor
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OiAvLyBU
aGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCiAgICAgICAgICAgICBzdHJl
YW0gPDwgImFkZCBxdWFkIGN1cnZlIHRvICIgPDwgZWxlbWVudC5wb2ludHNbMF0gPDwgIiAiIDw8
IGVsZW1lbnQucG9pbnRzWzFdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0
aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFp
biAzIHZhbHVlcy4KKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1Bv
aW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCiAgICAgICAg
ICAgICBzdHJlYW0gPDwgImFkZCBjdXJ2ZSB0byAiIDw8IGVsZW1lbnQucG9pbnRzWzBdIDw8ICIg
IiA8PCBlbGVtZW50LnBvaW50c1sxXSA8PCAiICIgPDwgZWxlbWVudC5wb2ludHNbMl07CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDogLy8g
VGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIG5vIHZhbHVlcy4KKyAgICAgICAgY2FzZSBQ
YXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxs
IGNvbnRhaW4gbm8gdmFsdWVzLgogICAgICAgICAgICAgc3RyZWFtIDw8ICJjbG9zZSBzdWJwYXRo
IjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKaW5kZXggMWE3NzVlZDdhMDcyNWRmNWQxOTlkMGNhOWRhNGEzM2RiNWQy
MjFkNS4uZTVjMmI3YzJiYTVlODg2MTgwNGVjNGVhMzgxOTAxZDJjYTI4NWU3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtOTEsMjAgKzkxLDIwIEBAIGNsYXNz
IFBhdGhUcmF2ZXJzYWxTdGF0ZTsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgU3Ryb2tlU3R5
bGVBcHBsaWVyOwogCi1lbnVtIFBhdGhFbGVtZW50VHlwZSB7Ci0gICAgUGF0aEVsZW1lbnRNb3Zl
VG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0gICAg
UGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250
YWluIDEgdmFsdWUuCi0gICAgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50LCAvLyBUaGUg
cG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCi0gICAgUGF0aEVsZW1lbnRBZGRD
dXJ2ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4K
LSAgICBQYXRoRWxlbWVudENsb3NlU3VicGF0aCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNv
bnRhaW4gbm8gdmFsdWVzLgotfTsKLQogLy8gVGhlIHBvaW50cyBpbiB0aGUgc3RydWN0dXJlIGFy
ZSB0aGUgc2FtZSBhcyB0aG9zZSB0aGF0IHdvdWxkIGJlIHVzZWQgd2l0aCB0aGUKIC8vIGFkZC4u
LiBtZXRob2QuIEZvciBleGFtcGxlLCBhIGxpbmUgcmV0dXJucyB0aGUgZW5kcG9pbnQsIHdoaWxl
IGEgY3ViaWMgcmV0dXJucwogLy8gdHdvIHRhbmdlbnQgcG9pbnRzIGFuZCB0aGUgZW5kcG9pbnQu
CiBzdHJ1Y3QgUGF0aEVsZW1lbnQgewotICAgIFBhdGhFbGVtZW50VHlwZSB0eXBlOwotICAgIEZs
b2F0UG9pbnQqIHBvaW50czsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAg
ICAgTW92ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVl
LgorICAgICAgICBBZGRMaW5lVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250
YWluIDEgdmFsdWUuCisgICAgICAgIEFkZFF1YWRDdXJ2ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMg
bWVtYmVyIHdpbGwgY29udGFpbiAyIHZhbHVlcy4KKyAgICAgICAgQWRkQ3VydmVUb1BvaW50LCAv
LyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCisgICAgICAgIENsb3Nl
U3VicGF0aCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFsdWVzLgorICAg
IH07CisKKyAgICBGbG9hdFBvaW50IHBvaW50c1szXTsKKyAgICBUeXBlIHR5cGU7CiB9OwogCiB1
c2luZyBQYXRoQXBwbGllckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFBhdGhF
bGVtZW50Jik+OwpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGF0aCBw
b2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKICAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpOb25a
ZXJvKSBjb25zdDsKLSAgICBib29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllcios
IGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBib29sIHN0cm9rZUNvbnRhaW5zKFN0cm9r
ZVN0eWxlQXBwbGllciYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICAvLyBmYXN0Qm91
bmRpbmdSZWN0KCkgc2hvdWxkIGVxdWFsIG9yIGNvbnRhaW4gYm91bmRpbmdSZWN0KCk7IGJvdW5k
aW5nUmVjdCgpCiAgICAgLy8gc2hvdWxkIHBlcmZlY3RseSBib3VuZCB0aGUgcG9pbnRzIHdpdGhp
biB0aGUgcGF0aC4KICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkgY29uc3Q7CkBAIC0xNTcs
MTMgKzE1NywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbGxpcHNlKEZsb2F0UG9pbnQsIGZs
b2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9hdCBzdGFydEFu
Z2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlKTsKICAgICB2b2lkIGFkZEVs
bGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBlbnVtIFJvdW5kZWRSZWN0U3RyYXRlZ3kg
ewotICAgICAgICBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCwKLSAgICAgICAgUHJlZmVyQmV6aWVy
Um91bmRlZFJlY3QKKyAgICBlbnVtIGNsYXNzIFJvdW5kZWRSZWN0U3RyYXRlZ3kgOiB1aW50OF90
IHsKKyAgICAgICAgUHJlZmVyTmF0aXZlLAorICAgICAgICBQcmVmZXJCZXppZXIKICAgICB9Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQ
cmVmZXJOYXRpdmVSb3VuZGVkUmVjdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFBy
ZWZlck5hdGl2ZVJvdW5kZWRSZWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwg
Um91bmRlZFJlY3RTdHJhdGVneSA9IFJvdW5kZWRSZWN0U3RyYXRlZ3k6OlByZWZlck5hdGl2ZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFJvdW5kZWRSZWN0U3RyYXRlZ3k6OlByZWZl
ck5hdGl2ZSk7CiAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwog
CiAgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
QEAgLTIzOSwyMiArMjM5LDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGF0aDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51
bShlbGVtZW50LnR5cGUpOwogCiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAg
ICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9p
bnRzWzBdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRM
aW5lVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9p
bnQ6CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzBdOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50Ogor
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50OgogICAg
ICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgICAgIGVuY29k
ZXIgPDwgZWxlbWVudC5wb2ludHNbMV07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6
VHlwZTo6QWRkQ3VydmVUb1BvaW50OgogICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBv
aW50c1swXTsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMV07CiAgICAg
ICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzJdOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CisgICAgICAgIGNhc2UgUGF0
aEVsZW1lbnQ6OlR5cGU6OkNsb3NlU3VicGF0aDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfSk7CkBAIC0yNzAsMjYgKzI3MCwyNiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBPcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBwYXRo
LmNsZWFyKCk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgbnVtUG9pbnRzOyArK2kp
IHsKLSAgICAgICAgUGF0aEVsZW1lbnRUeXBlIGVsZW1lbnRUeXBlOworICAgICAgICBQYXRoRWxl
bWVudDo6VHlwZSBlbGVtZW50VHlwZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
ZWxlbWVudFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAg
ICBzd2l0Y2ggKGVsZW1lbnRUeXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Q
b2ludDogeworICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDogewog
ICAgICAgICAgICAgRmxvYXRQb2ludCBwb2ludDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBwYXRoLm1vdmVUbyhwb2ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6IHsKKyAgICAgICAgY2Fz
ZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0
UG9pbnQgcG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcGF0aC5hZGRM
aW5lVG8ocG9pbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBQYXRoRWxlbWVudEFkZFF1YWRDdXJ2ZVRvUG9pbnQ6IHsKKyAgICAgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2lu
dCBjb250cm9sUG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQ
b2ludCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTMwMSw3ICsz
MDEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHBhdGguYWRkUXVhZEN1cnZlVG8oY29u
dHJvbFBvaW50LCBlbmRQb2ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OiB7CisgICAgICAgIGNhc2UgUGF0
aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2lu
dCBjb250cm9sUG9pbnQxOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9s
UG9pbnQxKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMzE3LDcg
KzMxNyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBhdGg+IFBhdGg6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRv
KGNvbnRyb2xQb2ludDEsIGNvbnRyb2xQb2ludDIsIGVuZFBvaW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6Cisg
ICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkNsb3NlU3VicGF0aDoKICAgICAgICAgICAg
IHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5jcHAKaW5kZXggOWM1MzM5YTJkMzBmYTVjMDIyZmI1NzA0Mzc5ZGUwNDVlNDgxNjExMC4u
OGE3ODIyMjkwZjVhMDE0YzZkZmRkMjY0MTA1ZWFiOGUzMGZjOWM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3Bw
CkBAIC0yNDMsMjIgKzI0MywyMiBAQCBib29sIFBhdGhUcmF2ZXJzYWxTdGF0ZTo6ZmluYWxpemVB
cHBlbmRQYXRoRWxlbWVudCgpCiAgICAgcmV0dXJuIG1fc3VjY2VzczsKIH0KIAotYm9vbCBQYXRo
VHJhdmVyc2FsU3RhdGU6OmFwcGVuZFBhdGhFbGVtZW50KFBhdGhFbGVtZW50VHlwZSB0eXBlLCBj
b25zdCBGbG9hdFBvaW50KiBwb2ludHMpCitib29sIFBhdGhUcmF2ZXJzYWxTdGF0ZTo6YXBwZW5k
UGF0aEVsZW1lbnQoUGF0aEVsZW1lbnQ6OlR5cGUgdHlwZSwgY29uc3QgRmxvYXRQb2ludCogcG9p
bnRzKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Q
b2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDoKICAgICAgICAg
bW92ZVRvKHBvaW50c1swXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRB
ZGRMaW5lVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2lu
dDoKICAgICAgICAgbGluZVRvKHBvaW50c1swXSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50OgorICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5
cGU6OkFkZFF1YWRDdXJ2ZVRvUG9pbnQ6CiAgICAgICAgIHF1YWRyYXRpY0JlemllclRvKHBvaW50
c1swXSwgcG9pbnRzWzFdKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXRoRWxlbWVudEFk
ZEN1cnZlVG9Qb2ludDoKKyAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRDdXJ2ZVRvUG9p
bnQ6CiAgICAgICAgIGN1YmljQmV6aWVyVG8ocG9pbnRzWzBdLCBwb2ludHNbMV0sIHBvaW50c1sy
XSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6Cisg
ICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICBjbG9zZVN1
YnBhdGgoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wg
UGF0aFRyYXZlcnNhbFN0YXRlOjphcHBlbmRQYXRoRWxlbWVudChQYXRoRWxlbWVudFR5cGUgdHlw
ZSwgY29uc3QgRmxvYXRQb2luCiAgICAgcmV0dXJuIGZpbmFsaXplQXBwZW5kUGF0aEVsZW1lbnQo
KTsKIH0KIAotYm9vbCBQYXRoVHJhdmVyc2FsU3RhdGU6OnByb2Nlc3NQYXRoRWxlbWVudChQYXRo
RWxlbWVudFR5cGUgdHlwZSwgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzKQorYm9vbCBQYXRoVHJh
dmVyc2FsU3RhdGU6OnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlwZSB0eXBlLCBj
b25zdCBGbG9hdFBvaW50KiBwb2ludHMpCiB7CiAgICAgaWYgKG1fc3VjY2VzcykKICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVHJhdmVyc2FsU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhUcmF2ZXJzYWxTdGF0ZS5oCmluZGV4IGJkM2MwZjFkMmIwY2E1NzgyZmQyZGQyMzRlZTg3
YzQ5Y2YwY2MwNTAuLjIyM2RmZjQ3ZTM2MmYyNjQ2YTVhZmRmNDY5NGY4YTE5Y2E5ZGQ1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJz
YWxTdGF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBQYXRoVHJhdmVyc2FsU3Rh
dGUoQWN0aW9uLCBmbG9hdCBkZXNpcmVkTGVuZ3RoID0gMCk7CiAKIHB1YmxpYzoKLSAgICBib29s
IHByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudFR5cGUsIGNvbnN0IEZsb2F0UG9pbnQqKTsK
KyAgICBib29sIHByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlwZSwgY29uc3QgRmxv
YXRQb2ludCopOwogICAgIGJvb2wgcHJvY2Vzc1BhdGhFbGVtZW50KGNvbnN0IFBhdGhFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBwcm9jZXNzUGF0aEVsZW1lbnQoZWxlbWVudC50eXBlLCBlbGVt
ZW50LnBvaW50cyk7IH0KIAogICAgIEFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Fj
dGlvbjsgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3ViaWNCZXppZXJU
byhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQm
KTsKIAogICAgIGJvb2wgZmluYWxpemVBcHBlbmRQYXRoRWxlbWVudCgpOwotICAgIGJvb2wgYXBw
ZW5kUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRUeXBlLCBjb25zdCBGbG9hdFBvaW50Kik7CisgICAg
Ym9vbCBhcHBlbmRQYXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlwZSwgY29uc3QgRmxvYXRQb2lu
dCopOwogCiBwcml2YXRlOgogICAgIEFjdGlvbiBtX2FjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmluZGV4IGRjMjg4
YjM1ZmZhMzNhNDY1ODhiMDQ0M2VkNGEzNDdkYjJlMmMxZmEuLmYwNGYxOTA1MjkzZGI3MDM1MGMw
N2M0ZjE5MjQ4NTI1YzE3ODYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApAQCAtMzk0LDE2ICszOTQsMTUgQEAgYm9v
bCBQYXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgV2luZFJ1bGUgcnVsZSkg
Y29uc3QKICAgICByZXR1cm4gY29udGFpbnM7CiB9CiAKLWJvb2wgUGF0aDo6c3Ryb2tlQ29udGFp
bnMoU3Ryb2tlU3R5bGVBcHBsaWVyKiBhcHBsaWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkg
Y29uc3QKK2Jvb2wgUGF0aDo6c3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHBsaWVyJiBhcHBs
aWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEFTU0VSVChhcHBsaWVyKTsKICAgICBjYWly
b190KiBjciA9IHBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCk7CiAgICAgewotICAgICAgICBHcmFw
aGljc0NvbnRleHQgZ2MoR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGNy
KSk7Ci0gICAgICAgIGFwcGxpZXItPnN0cm9rZVN0eWxlKCZnYyk7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVG
YWN0b3J5KGNyKSk7CisgICAgICAgIGFwcGxpZXIuc3Ryb2tlU3R5bGUoJmdyYXBoaWNzQ29udGV4
dCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNhaXJvX2luX3N0cm9rZShjciwgcG9pbnQueCgpLCBw
b2ludC55KCkpOwpAQCAtNDE3LDMzICs0MTYsMzEgQEAgdm9pZCBQYXRoOjphcHBseShjb25zdCBQ
YXRoQXBwbGllckZ1bmN0aW9uJiBmdW5jdGlvbikgY29uc3QKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtUGF0aCgpLT5jb250ZXh0KCk7CiAgICAgYXV0byBwYXRoQ29weSA9IGNhaXJvX2NvcHlf
cGF0aChjcik7CiAgICAgY2Fpcm9fcGF0aF9kYXRhX3QqIGRhdGE7Ci0gICAgUGF0aEVsZW1lbnQg
cGVsZW1lbnQ7Ci0gICAgRmxvYXRQb2ludCBwb2ludHNbM107Ci0gICAgcGVsZW1lbnQucG9pbnRz
ID0gcG9pbnRzOworICAgIFBhdGhFbGVtZW50IHBhdGhFbGVtZW50OwogCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwYXRoQ29weS0+bnVtX2RhdGE7IGkgKz0gcGF0aENvcHktPmRhdGFbaV0uaGVh
ZGVyLmxlbmd0aCkgewogICAgICAgICBkYXRhID0gJnBhdGhDb3B5LT5kYXRhW2ldOwogICAgICAg
ICBzd2l0Y2ggKGRhdGEtPmhlYWRlci50eXBlKSB7CiAgICAgICAgIGNhc2UgQ0FJUk9fUEFUSF9N
T1ZFX1RPOgotICAgICAgICAgICAgcGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50TW92ZVRvUG9p
bnQ7Ci0gICAgICAgICAgICBwZWxlbWVudC5wb2ludHNbMF0gPSBGbG9hdFBvaW50KGRhdGFbMV0u
cG9pbnQueCxkYXRhWzFdLnBvaW50LnkpOwotICAgICAgICAgICAgZnVuY3Rpb24ocGVsZW1lbnQp
OworICAgICAgICAgICAgcGF0aEVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50OjpUeXBlOjpNb3Zl
VG9Qb2ludDsKKyAgICAgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1swXSA9IEZsb2F0UG9pbnQo
ZGF0YVsxXS5wb2ludC54LCBkYXRhWzFdLnBvaW50LnkpOworICAgICAgICAgICAgZnVuY3Rpb24o
cGF0aEVsZW1lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0FJUk9fUEFU
SF9MSU5FX1RPOgotICAgICAgICAgICAgcGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50QWRkTGlu
ZVRvUG9pbnQ7Ci0gICAgICAgICAgICBwZWxlbWVudC5wb2ludHNbMF0gPSBGbG9hdFBvaW50KGRh
dGFbMV0ucG9pbnQueCxkYXRhWzFdLnBvaW50LnkpOwotICAgICAgICAgICAgZnVuY3Rpb24ocGVs
ZW1lbnQpOworICAgICAgICAgICAgcGF0aEVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50OjpUeXBl
OjpBZGRMaW5lVG9Qb2ludDsKKyAgICAgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1swXSA9IEZs
b2F0UG9pbnQoZGF0YVsxXS5wb2ludC54LCBkYXRhWzFdLnBvaW50LnkpOworICAgICAgICAgICAg
ZnVuY3Rpb24ocGF0aEVsZW1lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q0FJUk9fUEFUSF9DVVJWRV9UTzoKLSAgICAgICAgICAgIHBlbGVtZW50LnR5cGUgPSBQYXRoRWxl
bWVudEFkZEN1cnZlVG9Qb2ludDsKLSAgICAgICAgICAgIHBlbGVtZW50LnBvaW50c1swXSA9IEZs
b2F0UG9pbnQoZGF0YVsxXS5wb2ludC54LGRhdGFbMV0ucG9pbnQueSk7Ci0gICAgICAgICAgICBw
ZWxlbWVudC5wb2ludHNbMV0gPSBGbG9hdFBvaW50KGRhdGFbMl0ucG9pbnQueCxkYXRhWzJdLnBv
aW50LnkpOwotICAgICAgICAgICAgcGVsZW1lbnQucG9pbnRzWzJdID0gRmxvYXRQb2ludChkYXRh
WzNdLnBvaW50LngsZGF0YVszXS5wb2ludC55KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uKHBlbGVt
ZW50KTsKKyAgICAgICAgICAgIHBhdGhFbGVtZW50LnR5cGUgPSBQYXRoRWxlbWVudDo6VHlwZTo6
QWRkQ3VydmVUb1BvaW50OworICAgICAgICAgICAgcGF0aEVsZW1lbnQucG9pbnRzWzBdID0gRmxv
YXRQb2ludChkYXRhWzFdLnBvaW50LngsIGRhdGFbMV0ucG9pbnQueSk7CisgICAgICAgICAgICBw
YXRoRWxlbWVudC5wb2ludHNbMV0gPSBGbG9hdFBvaW50KGRhdGFbMl0ucG9pbnQueCwgZGF0YVsy
XS5wb2ludC55KTsKKyAgICAgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1syXSA9IEZsb2F0UG9p
bnQoZGF0YVszXS5wb2ludC54LCBkYXRhWzNdLnBvaW50LnkpOworICAgICAgICAgICAgZnVuY3Rp
b24ocGF0aEVsZW1lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0FJUk9f
UEFUSF9DTE9TRV9QQVRIOgotICAgICAgICAgICAgcGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50
Q2xvc2VTdWJwYXRoOwotICAgICAgICAgICAgZnVuY3Rpb24ocGVsZW1lbnQpOworICAgICAgICAg
ICAgcGF0aEVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50OjpUeXBlOjpDbG9zZVN1YnBhdGg7Cisg
ICAgICAgICAgICBmdW5jdGlvbihwYXRoRWxlbWVudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwCmluZGV4IGU0YWU1ZDVkZWNjNjk3OTYzY2I5MTU2Nzk3NjBjMzNlMmQ2NDRkYzYu
LjNkMWQ1ZjFjMGVlOTU3ZGIxMjMwNGRlNzkwMTc5NDk4NDhmYzg3ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAtMTg1LDIxICsxODUs
MTkgQEAgYm9vbCBQYXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBvaW50ICZwb2ludCwgV2luZFJ1
bGUgcnVsZSkgY29uc3QKICAgICByZXR1cm4gcmV0OwogfQogCi1ib29sIFBhdGg6OnN0cm9rZUNv
bnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpIGNvbnN0Citib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciYg
YXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoYXBwbGllcik7Ci0KICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHNjcmF0Y2hDb250ZXh0KCk7CiAKICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsK
ICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBsYXRmb3JtUGF0aCgpKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKLSAgICBhcHBsaWVyLT5zdHJva2VTdHlsZSgmZ2Mp
OworICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7CisgICAgYXBw
bGllci5zdHJva2VTdHlsZSgmZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIGJvb2wgaGl0U3VjY2Vz
cyA9IENHQ29udGV4dFBhdGhDb250YWluc1BvaW50KGNvbnRleHQsIHBvaW50LCBrQ0dQYXRoU3Ry
b2tlKTsKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwpAQCAtNDI5LDI5ICs0
MjcsMjcgQEAgRmxvYXRQb2ludCBQYXRoOjpjdXJyZW50UG9pbnQoKSBjb25zdAogc3RhdGljIHZv
aWQgQ0dQYXRoQXBwbGllclRvUGF0aEFwcGxpZXIodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCogZWxlbWVudCkKIHsKICAgICBjb25zdCBQYXRoQXBwbGllckZ1bmN0aW9uJiBmdW5jdGlv
biA9ICooUGF0aEFwcGxpZXJGdW5jdGlvbiopaW5mbzsKLSAgICBGbG9hdFBvaW50IHBvaW50c1sz
XTsKLSAgICBQYXRoRWxlbWVudCBwZWxlbWVudDsKLSAgICBwZWxlbWVudC50eXBlID0gKFBhdGhF
bGVtZW50VHlwZSllbGVtZW50LT50eXBlOwotICAgIHBlbGVtZW50LnBvaW50cyA9IHBvaW50czsK
KyAgICBQYXRoRWxlbWVudCBwYXRoRWxlbWVudDsKKyAgICBwYXRoRWxlbWVudC50eXBlID0gKFBh
dGhFbGVtZW50OjpUeXBlKWVsZW1lbnQtPnR5cGU7CiAgICAgQ0dQb2ludCogY2dQb2ludHMgPSBl
bGVtZW50LT5wb2ludHM7CiAgICAgc3dpdGNoIChlbGVtZW50LT50eXBlKSB7CiAgICAgY2FzZSBr
Q0dQYXRoRWxlbWVudE1vdmVUb1BvaW50OgogICAgIGNhc2Uga0NHUGF0aEVsZW1lbnRBZGRMaW5l
VG9Qb2ludDoKLSAgICAgICAgcG9pbnRzWzBdID0gY2dQb2ludHNbMF07CisgICAgICAgIHBhdGhF
bGVtZW50LnBvaW50c1swXSA9IGNnUG9pbnRzWzBdOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IGtDR1BhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgcG9pbnRzWzBdID0g
Y2dQb2ludHNbMF07Ci0gICAgICAgIHBvaW50c1sxXSA9IGNnUG9pbnRzWzFdOworICAgICAgICBw
YXRoRWxlbWVudC5wb2ludHNbMF0gPSBjZ1BvaW50c1swXTsKKyAgICAgICAgcGF0aEVsZW1lbnQu
cG9pbnRzWzFdID0gY2dQb2ludHNbMV07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NHUGF0
aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6Ci0gICAgICAgIHBvaW50c1swXSA9IGNnUG9pbnRzWzBd
OwotICAgICAgICBwb2ludHNbMV0gPSBjZ1BvaW50c1sxXTsKLSAgICAgICAgcG9pbnRzWzJdID0g
Y2dQb2ludHNbMl07CisgICAgICAgIHBhdGhFbGVtZW50LnBvaW50c1swXSA9IGNnUG9pbnRzWzBd
OworICAgICAgICBwYXRoRWxlbWVudC5wb2ludHNbMV0gPSBjZ1BvaW50c1sxXTsKKyAgICAgICAg
cGF0aEVsZW1lbnQucG9pbnRzWzJdID0gY2dQb2ludHNbMl07CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2Uga0NHUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBmdW5jdGlvbihwZWxlbWVudCk7CisgICAgZnVuY3Rpb24ocGF0aEVsZW1lbnQpOwogfQog
CiB2b2lkIFBhdGg6OmFwcGx5KGNvbnN0IFBhdGhBcHBsaWVyRnVuY3Rpb24mIGZ1bmN0aW9uKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dGhEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0
aERpcmVjdDJELmNwcAppbmRleCBhYTY5ZWYzNDRkMTZlZWQ1MzEzN2IzZDI0ZTQzYWE0ZDFiMWVm
NTc4Li44MWFiNmEyYzkwNzhhM2I1MjY2OGY5NDE5MTE5ZjI5ZGZmZTY0YTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNw
cApAQCAtMjI1LDE2ICsyMjUsMTQgQEAgYm9vbCBQYXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgV2luZFJ1bGUgcnVsZSkgY29uc3QKICAgICByZXR1cm4gY29udGFpbnM7CiB9
CiAKLWJvb2wgUGF0aDo6c3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHBsaWVyKiBhcHBsaWVy
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKK2Jvb2wgUGF0aDo6c3Ryb2tlQ29udGFp
bnMoU3Ryb2tlU3R5bGVBcHBsaWVyJiBhcHBsaWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IEFTU0VSVChhcHBsaWVyKTsKLQogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHNjcmF0Y2hD
b250ZXh0RDJEKHNjcmF0Y2hSZW5kZXJUYXJnZXQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHNj
cmF0Y2hDb250ZXh0KCZzY3JhdGNoQ29udGV4dEQyRCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKLSAgICBhcHBsaWVyLT5zdHJva2VTdHls
ZSgmc2NyYXRjaENvbnRleHQpOworICAgIGFwcGxpZXIuc3Ryb2tlU3R5bGUoJnNjcmF0Y2hDb250
ZXh0KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB1bnNpZ25lZCBiZWZvcmUgPSByZWZD
b3VudChtX3BhdGguZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Cb3hTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0Jv
eFNoYXBlLmNwcAppbmRleCAwZGE3MDllZmJlNDQ4ZWRkNjJlNzU0NTU4NTc3YjM0NzYxNjc3YjM5
Li5jMmU1M2RkNzljOWJiM2E3YzhmMTVkMmMxYjMwZTM1OTMzYzg2YTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBA
IExpbmVTZWdtZW50IEJveFNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFsKExheW91dFVuaXQgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpCiAKIHZvaWQgQm94U2hhcGU6OmJ1aWxkRGlzcGxheVBh
dGhzKERpc3BsYXlQYXRocyYgcGF0aHMpIGNvbnN0CiB7Ci0gICAgcGF0aHMuc2hhcGUuYWRkUm91
bmRlZFJlY3QobV9ib3VuZHMsIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKKyAgICBw
YXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywgUGF0aDo6Um91bmRlZFJlY3RTdHJh
dGVneTo6UHJlZmVyQmV6aWVyKTsKICAgICBpZiAoc2hhcGVNYXJnaW4oKSkKLSAgICAgICAgcGF0
aHMubWFyZ2luU2hhcGUuYWRkUm91bmRlZFJlY3Qoc2hhcGVNYXJnaW5Cb3VuZHMoKSwgUGF0aDo6
UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRS
b3VuZGVkUmVjdChzaGFwZU1hcmdpbkJvdW5kcygpLCBQYXRoOjpSb3VuZGVkUmVjdFN0cmF0ZWd5
OjpQcmVmZXJCZXppZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCmluZGV4IGYz
NjE5ZDZhNWExOGFmYTU0NTFkMTFmN2MzNTEyODhmMjcwMjE3ZTYuLjQyOWRlYjg1YzA5ZGQ1MzI3
ODkyNTc4YjUxN2I1ZGNiMGE5OGNjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCkBAIC05MCw5ICs5MCw5IEBAIExpbmVTZWdt
ZW50IFJlY3RhbmdsZVNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFsKExheW91dFVuaXQgbG9naWNh
bFRvcCwgTGF5b3V0VW5pCiAKIHZvaWQgUmVjdGFuZ2xlU2hhcGU6OmJ1aWxkRGlzcGxheVBhdGhz
KERpc3BsYXlQYXRocyYgcGF0aHMpIGNvbnN0CiB7Ci0gICAgcGF0aHMuc2hhcGUuYWRkUm91bmRl
ZFJlY3QobV9ib3VuZHMsIEZsb2F0U2l6ZShtX3JhZGlpLndpZHRoKCksIG1fcmFkaWkuaGVpZ2h0
KCkpLCBQYXRoOjpQcmVmZXJCZXppZXJSb3VuZGVkUmVjdCk7CisgICAgcGF0aHMuc2hhcGUuYWRk
Um91bmRlZFJlY3QobV9ib3VuZHMsIEZsb2F0U2l6ZShtX3JhZGlpLndpZHRoKCksIG1fcmFkaWku
aGVpZ2h0KCkpLCBQYXRoOjpSb3VuZGVkUmVjdFN0cmF0ZWd5OjpQcmVmZXJCZXppZXIpOwogICAg
IGlmIChzaGFwZU1hcmdpbigpKQotICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVk
UmVjdChzaGFwZU1hcmdpbkJvdW5kcygpLCBGbG9hdFNpemUobV9yYWRpaS53aWR0aCgpICsgc2hh
cGVNYXJnaW4oKSwgbV9yYWRpaS5oZWlnaHQoKSArIHNoYXBlTWFyZ2luKCkpLCBQYXRoOjpQcmVm
ZXJCZXppZXJSb3VuZGVkUmVjdCk7CisgICAgICAgIHBhdGhzLm1hcmdpblNoYXBlLmFkZFJvdW5k
ZWRSZWN0KHNoYXBlTWFyZ2luQm91bmRzKCksIEZsb2F0U2l6ZShtX3JhZGlpLndpZHRoKCkgKyBz
aGFwZU1hcmdpbigpLCBtX3JhZGlpLmhlaWdodCgpICsgc2hhcGVNYXJnaW4oKSksIFBhdGg6OlJv
dW5kZWRSZWN0U3RyYXRlZ3k6OlByZWZlckJlemllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5j
cHAKaW5kZXggN2Q4ODYxYWVjMDFlYTM3MjBiOTVkNTNmZjVlNWQwODBiNzQ3NmU3Mi4uODQzOGVk
YWFlMzBiOTUwMTYwYjNiMWVlYzVjZDNmYTMxODI5Yjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTEyMCwxMCArMTIwLDEwIEBA
IGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIFBvaW50CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2Fs
aW5nVHJhbnNmb3JtID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpOwogICAgICAgICBQYXRo
KiB1c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5n
VHJhbnNmb3JtKTsKIAotICAgICAgICByZXR1cm4gdXNlUGF0aC0+c3Ryb2tlQ29udGFpbnMoJmFw
cGxpZXIsIG5vblNjYWxpbmdUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQpKTsKKyAgICAgICAgcmV0
dXJuIHVzZVBhdGgtPnN0cm9rZUNvbnRhaW5zKGFwcGxpZXIsIG5vblNjYWxpbmdUcmFuc2Zvcm0u
bWFwUG9pbnQocG9pbnQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXRoLT5zdHJva2VDb250
YWlucygmYXBwbGllciwgcG9pbnQpOworICAgIHJldHVybiBtX3BhdGgtPnN0cm9rZUNvbnRhaW5z
KGFwcGxpZXIsIHBvaW50KTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRl
bnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFdpbmRSdWxlIGZp
bGxSdWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdNYXJrZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRh
dGEuaAppbmRleCA1M2RhMzcxZjcyYzEyODY1N2FhZTg0NjFjOWM2Nzk0ODEzNDkzNjUzLi42ZjVi
MTRiMGM0NTE2YTRkOTBkNzUwNGMxYTBlOGNlZmM5Zjk2MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaApAQCAtMTExLDI2ICsxMTEsMjYgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTWFya2VyRGF0YUZvclBhdGhFbGVtZW50KGNvbnN0IFBh
dGhFbGVtZW50JiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgRmxvYXRQb2ludCogcG9pbnRzID0g
ZWxlbWVudC5wb2ludHM7CisgICAgICAgIGF1dG8mIHBvaW50cyA9IGVsZW1lbnQucG9pbnRzOwog
CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1l
bnRBZGRRdWFkQ3VydmVUb1BvaW50OgotICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzExNSAoUGF0aEVsZW1lbnRBZGRRdWFkQ3Vy
dmVUb1BvaW50IG5vdCBoYW5kbGVkIGZvciA8bWFya2VyPikKKyAgICAgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxMTUgKFBhdGhFbGVtZW50
OjpUeXBlOjpBZGRRdWFkQ3VydmVUb1BvaW50IG5vdCBoYW5kbGVkIGZvciA8bWFya2VyPikKICAg
ICAgICAgICAgIG1fb3JpZ2luID0gcG9pbnRzWzFdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVs
ZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgIG1faW5zbG9wZVBvaW50
c1swXSA9IHBvaW50c1sxXTsKICAgICAgICAgICAgIG1faW5zbG9wZVBvaW50c1sxXSA9IHBvaW50
c1syXTsKICAgICAgICAgICAgIG1fb3JpZ2luID0gcG9pbnRzWzJdOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICAgICAgY2FzZSBQ
YXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgICAgICBtX3N1YnBhdGhTdGFy
dCA9IHBvaW50c1swXTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIFBh
dGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6
OkFkZExpbmVUb1BvaW50OgogICAgICAgICAgICAgdXBkYXRlSW5zbG9wZShwb2ludHNbMF0pOwog
ICAgICAgICAgICAgbV9vcmlnaW4gPSBwb2ludHNbMF07CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDoKKyAgICAgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoOgogICAgICAgICAgICAgdXBkYXRlSW5zbG9wZShwb2lu
dHNbMF0pOwogICAgICAgICAgICAgbV9vcmlnaW4gPSBtX3N1YnBhdGhTdGFydDsKICAgICAgICAg
ICAgIG1fc3VicGF0aFN0YXJ0ID0gRmxvYXRQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAppbmRleCAyYmFiMTgwMmE2NTU0ZDkxYjU1YTA5Nzg2
NTg4MTZlMDIxNzFjMTNmLi4zYzkxYWMzMDM2MGU3YTk1YzhhZDYxODJlODI4Njc0Y2U2YzBmNjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcApAQCAt
MTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29uc3QgU1ZH
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBlbmZvcmNl
IHVzaW5nIGJlemllcnMgaGVyZSwgYXMgYXQgbGVhc3Qgb24gQ29yZUdyYXBoaWNzL0xpb24sIGFz
CiAgICAgICAgIC8vIHRoZSBuYXRpdmUgbWV0aG9kIHVzZXMgYSBkaWZmZXJlbnQgbGluZSBkYXNo
IG9yaWdpbiwgY2F1c2luZyBzdmcvY3VzdG9tL2Rhc2hPcmlnaW4uc3ZnIHRvIGZhaWwuCiAgICAg
ICAgIC8vIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
OTMyIHdoaWNoIHRyYWNrcyB0aGlzIGlzc3VlLgotICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgRmxvYXRTaXplKHJ4LCByeSksIFBhdGg6
OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKKyAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCksIEZsb2F0U2l6ZShyeCwgcnkpLCBQYXRoOjpS
b3VuZGVkUmVjdFN0cmF0ZWd5OjpQcmVmZXJCZXppZXIpOwogICAgICAgICByZXR1cm4gcGF0aDsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU3Vi
cGF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU3VicGF0aERhdGEu
aAppbmRleCAwZmZiZWVkOWM0OGMxNDFkMDhlYmZmZjU1OGI3ZTdkMGY3NmFjODRmLi44YzcyMjM0
MDgwMDU5M2FhOTQ4YWI4MDE0YzQzMTY2ZGU5ZDAwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1N1YnBhdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdTdWJwYXRoRGF0YS5oCkBAIC0zNCwzNSArMzQsMzUgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUZyb21QYXRoRWxlbWVudChTVkdTdWJwYXRoRGF0YSYg
c3VicGF0aEZpbmRlciwgY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRv
UG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OgogICAg
ICAgICAgICAgaWYgKHN1YnBhdGhGaW5kZXIubV9wYXRoSXNaZXJvTGVuZ3RoICYmICFzdWJwYXRo
RmluZGVyLm1faGF2ZVNlZW5Nb3ZlT25seSkKICAgICAgICAgICAgICAgICBzdWJwYXRoRmluZGVy
Lm1femVyb0xlbmd0aFN1YnBhdGhMb2NhdGlvbnMuYXBwZW5kKHN1YnBhdGhGaW5kZXIubV9sYXN0
UG9pbnQpOwogICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCA9IHN1YnBhdGhG
aW5kZXIubV9tb3ZlUG9pbnQgPSBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAgICAgIHN1YnBh
dGhGaW5kZXIubV9oYXZlU2Vlbk1vdmVPbmx5ID0gdHJ1ZTsKICAgICAgICAgICAgIHN1YnBhdGhG
aW5kZXIubV9wYXRoSXNaZXJvTGVuZ3RoID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVs
ZW1lbnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50OgogICAgICAgICAgICAgaWYgKHN1YnBhdGhGaW5k
ZXIubV9sYXN0UG9pbnQgIT0gZWxlbWVudC5wb2ludHNbMF0pIHsKICAgICAgICAgICAgICAgICBz
dWJwYXRoRmluZGVyLm1fcGF0aElzWmVyb0xlbmd0aCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IHN1YnBhdGhGaW5kZXIubV9sYXN0UG9pbnQgPSBlbGVtZW50LnBvaW50c1swXTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN1YnBhdGhGaW5kZXIubV9oYXZlU2Vlbk1vdmVPbmx5ID0gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZFF1YWRD
dXJ2ZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRDdXJ2
ZVRvUG9pbnQ6CiAgICAgICAgICAgICBpZiAoc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCAhPSBl
bGVtZW50LnBvaW50c1swXSB8fCBlbGVtZW50LnBvaW50c1swXSAhPSBlbGVtZW50LnBvaW50c1sx
XSkgewogICAgICAgICAgICAgICAgIHN1YnBhdGhGaW5kZXIubV9wYXRoSXNaZXJvTGVuZ3RoID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCA9IGVsZW1l
bnQucG9pbnRzWzFdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3VicGF0aEZpbmRlci5t
X2hhdmVTZWVuTW92ZU9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50
OjpUeXBlOjpBZGRDdXJ2ZVRvUG9pbnQ6CiAgICAgICAgICAgICBpZiAoc3VicGF0aEZpbmRlci5t
X2xhc3RQb2ludCAhPSBlbGVtZW50LnBvaW50c1swXSB8fCBlbGVtZW50LnBvaW50c1swXSAhPSBl
bGVtZW50LnBvaW50c1sxXSB8fCBlbGVtZW50LnBvaW50c1sxXSAhPSBlbGVtZW50LnBvaW50c1sy
XSkgewogICAgICAgICAgICAgICAgIHN1YnBhdGhGaW5kZXIubV9wYXRoSXNaZXJvTGVuZ3RoID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX2xhc3RQb2ludCA9IGVsZW1l
bnQucG9pbnRzWzJdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3VicGF0aEZpbmRlci5t
X2hhdmVTZWVuTW92ZU9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpU
eXBlOjpDbG9zZVN1YnBhdGg6CiAgICAgICAgICAgICBpZiAoc3VicGF0aEZpbmRlci5tX3BhdGhJ
c1plcm9MZW5ndGgpCiAgICAgICAgICAgICAgICAgc3VicGF0aEZpbmRlci5tX3plcm9MZW5ndGhT
dWJwYXRoTG9jYXRpb25zLmFwcGVuZChzdWJwYXRoRmluZGVyLm1fbGFzdFBvaW50KTsKICAgICAg
ICAgICAgIHN1YnBhdGhGaW5kZXIubV9oYXZlU2Vlbk1vdmVPbmx5ID0gdHJ1ZTsgLy8gVGhpcyBp
cyBhbiBpbXBsaWNpdCBtb3ZlIGZvciB0aGUgbmV4dCBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAKaW5kZXggZGUxYTBj
YWM5NWI5MzkxZjUyZGM2MmZhYTY4MWM2NTc1NTg1YmZlMy4uNmM4NDgyM2Q4NTNiZDg0NjdiNTUw
OTBhNDc5YzA0NGQ5NWI4YjMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcApAQCAtMzYsMjQgKzM2LDI0IEBAIFNWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIoUGF0aFRy
YXZlcnNhbFN0YXRlJiBzCiAKIHZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bW92
ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpCiB7Ci0gICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVsZW1l
bnRNb3ZlVG9Qb2ludCwgJnRhcmdldFBvaW50KTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nl
c3NQYXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQsICZ0YXJnZXRQb2lu
dCk7CiB9CiAKIHZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvKGNvbnN0
IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCiB7Ci0gICAgbV90
cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2lu
dCwgJnRhcmdldFBvaW50KTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVu
dChQYXRoRWxlbWVudDo6VHlwZTo6QWRkTGluZVRvUG9pbnQsICZ0YXJnZXRQb2ludCk7CiB9CiAK
IHZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBv
aW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlKQogewogICAgIEZsb2F0UG9pbnQg
cG9pbnRzW10gPSB7IHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCB9OwogCi0gICAgbV90cmF2
ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQs
IHBvaW50cyk7CisgICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0aEVs
ZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludCwgcG9pbnRzKTsKIH0KIAogdm9pZCBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIG1fdHJhdmVyc2FsU3Rh
dGUucHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoLCBudWxscHRyKTsK
KyAgICBtX3RyYXZlcnNhbFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudDo6VHlw
ZTo6Q2xvc2VTdWJwYXRoLCBudWxscHRyKTsKIH0KIAogYm9vbCBTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyOjpjb250aW51ZUNvbnN1bWluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHAKaW5kZXggYjE5N2Q1YmFhYzBhNDQ2ZjlhNjMxYzdiN2YxYTY2YzEwZTc0ZDkz
My4uZGQwZjkyMmQ0ZTVkNTNmOWNiMGVlNDI3ODhmNmZiZGM2NWEzZTMzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtNTgsMTkgKzU4LDE5IEBAIFN0cmluZyBi
dWlsZFN0cmluZ0Zyb21QYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKCFwYXRoLmlzTnVs
bCgpICYmICFwYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBwYXRoLmFwcGx5KFsmYnVpbGRlcl0g
KGNvbnN0IFBhdGhFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1l
bnQudHlwZSkgewotICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudE1vdmVUb1BvaW50OgorICAg
ICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6CiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ00nKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMF0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1l
bnQ6OlR5cGU6OkFkZExpbmVUb1BvaW50OgogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdMJyk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2lu
dHNbMF0ueCgpKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVh
ZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1
YWRDdXJ2ZVRvUG9pbnQ6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1EnKTsKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkp
OwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CkBAIC04MCw3ICs4MCw3IEBA
IFN0cmluZyBidWlsZFN0cmluZ0Zyb21QYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAg
IGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDoKICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnQycpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKQEAgLTk0LDcgKzk0LDcgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJdLnkoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50Q2xv
c2VTdWJwYXRoOgorICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJw
YXRoOgogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggZWE2OGRiZDIwZmFmZmI5MWRiZWE1ODYxZGU3ZGYyOGNjZWFkOTA1NC4uNDlmMjY2ZGY4
N2M4YzczOGRmNjE0YzRkOGQwOTJkZjc1Nzc5NTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNDQxOCwxOSArNDQxOCwxOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IElu
dGVybmFsczo6cGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMoY29uc3QgVmVjdG9yPGRv
dQogICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgUGF0aFV0aWxpdGllczo6
cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMocmVjdHMsIHJhZGl1cykuYXBwbHkoWyZidWlsZGVy
XShjb25zdCBQYXRoRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICBzd2l0Y2ggKGVsZW1lbnQu
dHlwZSkgewotICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OgogICAgICAgICAgICAgYnVpbGRlci5t
b3ZlVG8oZWxlbWVudC5wb2ludHNbMF0sIGZhbHNlLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50
OgorICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDoKICAgICAg
ICAgICAgIGJ1aWxkZXIubGluZVRvKGVsZW1lbnQucG9pbnRzWzBdLCBBYnNvbHV0ZUNvb3JkaW5h
dGVzKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZFF1
YWRDdXJ2ZVRvUG9pbnQ6CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRD
dXJ2ZVRvUG9pbnQ6CiAgICAgICAgICAgICBidWlsZGVyLmN1cnZlVG9RdWFkcmF0aWMoZWxlbWVu
dC5wb2ludHNbMF0sIGVsZW1lbnQucG9pbnRzWzFdLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2lu
dDoKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50OgogICAg
ICAgICAgICAgYnVpbGRlci5jdXJ2ZVRvQ3ViaWMoZWxlbWVudC5wb2ludHNbMF0sIGVsZW1lbnQu
cG9pbnRzWzFdLCBlbGVtZW50LnBvaW50c1syXSwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6Cisg
ICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkNsb3NlU3VicGF0aDoKICAgICAgICAgICAg
IGJ1aWxkZXIuY2xvc2VQYXRoKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>