<?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>179610</bug_id>
          
          <creation_ts>2017-11-13 03:33:15 -0800</creation_ts>
          <short_desc>[Cairo] Move state change operations from GraphicsContextCairo to CairoOperations</short_desc>
          <delta_ts>2018-11-07 03:29:36 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>fred.wang</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1370879</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-13 03:33:15 -0800</bug_when>
    <thetext>[Cairo] Move state change operations from GraphicsContextCairo to CairoOperations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370880</commentid>
    <comment_count>1</comment_count>
      <attachid>326754</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-13 03:36:39 -0800</bug_when>
    <thetext>Created attachment 326754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370887</commentid>
    <comment_count>2</comment_count>
      <attachid>326757</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-13 05:41:10 -0800</bug_when>
    <thetext>Created attachment 326757
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370888</commentid>
    <comment_count>3</comment_count>
      <attachid>326757</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-13 05:41:43 -0800</bug_when>
    <thetext>Comment on attachment 326757
Patch for landing

Clearing flags on attachment: 326757

Committed r224753: &lt;https://trac.webkit.org/changeset/224753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370889</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-13 05:41:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371987</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:44:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475945</commentid>
    <comment_count>6</comment_count>
      <attachid>326757</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-07 03:27:57 -0800</bug_when>
    <thetext>Comment on attachment 326757
Patch for landing

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

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:204
&gt; +    return Cairo::State::getCTM(*platformContext());

All these Cairo::State::* calls required CairoOperations.h. I&apos;ll land a fix to add the missing include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475946</commentid>
    <comment_count>7</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-07 03:29:36 -0800</bug_when>
    <thetext>Committed r237920: &lt;https://trac.webkit.org/changeset/237920&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326754</attachid>
            <date>2017-11-13 03:36:39 -0800</date>
            <delta_ts>2017-11-13 05:41:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179610-20171113123637.patch</filename>
            <type>text/plain</type>
            <size>17134</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdhN2Q5NDNiOGMyM2Y2
NmI2NWU1OGM1ODdiYTgyMzZiYTYzNDJmNi4uMjlmNjQ0NGZiNzE5MjA5M2U0NGM2ZTA1MzZhYjZh
OTZhNTI0MzY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE3LTExLTEzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbQ2Fpcm9dIE1vdmUg
c3RhdGUgY2hhbmdlIG9wZXJhdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRDYWlybyB0byBDYWly
b09wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgb3BlcmF0aW9ucyB0aGF0IHBlcmZvcm0gQ2Fpcm8gc3RhdGUgY2hhbmdlcyB0byB0
aGUgQ2Fpcm9PcGVyYXRpb25zCisgICAgICAgIGZpbGUuIFRoaXMgZW5mb3JjZXMgb25seSB1c2lu
ZyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gb2JqZWN0IHRvCisgICAgICAgIGFjaGlldmUgdGhl
IHN0YXRlIGNoYW5nZSwgbGV2ZXJhZ2luZyB0aGUgY2Fpcm9fdCBhbmQgU2hhZG93Qmx1ciBvYmpl
Y3RzCisgICAgICAgIHRoYXQgYXJlIG93bmVkIGJ5IFBsYXRmb3JtQ29udGV4dENhaXJvLgorCisg
ICAgICAgIEFsb25nIHdpdGggc3RhdGUgbW9kaWZpY2F0aW9uIG9wZXJhdGlvbnMsIHZhcmlvdXMg
c3RhdGUgcXVlcnkgb3BlcmF0aW9ucworICAgICAgICBhcmUgYWxzbyBwbGFjZWQgdW5kZXIgdGhl
IENhaXJvOjpTdGF0ZSBuYW1lc3BhY2UsIGFnYWluIGxpbWl0ZWQgdG8gdGhlCisgICAgICAgIFBs
YXRmb3JtQ29udGV4dENhaXJvIG9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0
U3Ryb2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0R2xv
YmFsQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVP
cGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRp
YWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0Q1RNKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpTdGF0ZTo6c2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpTdGF0ZTo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRl
OjpnZXRDbGlwQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6cm91bmRU
b0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3RhdGU6OmlzQWNjZWxl
cmF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldENU
TSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0
Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5k
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQgY29uc3QpOgorCisyMDE3
LTExLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBb
Q2Fpcm9dIE1vdmUgZm9jdXMgcmluZyBkcmF3aW5nIG9wZXJhdGlvbnMgZnJvbSBHcmFwaGljc0Nv
bnRleHRDYWlybyB0byBDYWlyb09wZXJhdGlvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTYwMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCBh
Zjk5MzBmYzU1ODlhYjVkMzA0OGQwYTc3NDBmMmE1ZTU4ZWYwZGRkLi5lZTQyNmNiZDAxOTFlM2Ji
N2JmZjVlMTMwZDE1OGVmNWQ0YzY1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKIAogI2lmIFVTRShDQUlSTykKIAorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCkBAIC0xNjMsNiArMTY0LDExIEBAIHN0YXRpYyBpbmxpbmUgU3Ry
b2tlU3R5bGUgZm9jdXNSaW5nU3Ryb2tlU3R5bGUoKQogCiBuYW1lc3BhY2UgU3RhdGUgewogCit2
b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBmbG9hdCBzdHJva2VUaGlja25lc3MpCit7CisgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgo
cGxhdGZvcm1Db250ZXh0LmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7Cit9CisKIHZvaWQgc2V0U3Ry
b2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBkYXNoUGF0dGVybltd
ID0geyA1LjAsIDUuMCB9OwpAQCAtMTg5LDYgKzE5NSwxMTAgQEAgdm9pZCBzZXRTdHJva2VTdHls
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBTdHJva2VTdHlsZSBzdHJv
a2VTdHkKICAgICB9CiB9CiAKK3ZvaWQgc2V0R2xvYmFsQWxwaGEoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgYWxwaGEpCit7CisgICAgcGxhdGZvcm1Db250ZXh0
LnNldEdsb2JhbEFscGhhKGFscGhhKTsKK30KKwordm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24o
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQoreworICAgIGNhaXJvX3Nl
dF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRleHQuY3IoKSwgdG9DYWlyb09wZXJhdG9yKGNvbXBvc2l0
ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKSk7Cit9CisKK3ZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGJvb2wgZW5hYmxlKQoreworICAg
IC8vIFdoZW4gdHJ1ZSwgdXNlIHRoZSBkZWZhdWx0IENhaXJvIGJhY2tlbmQgYW50aWFsaWFzIG1v
ZGUgKHVzdWFsbHkgdGhpcworICAgIC8vIGVuYWJsZXMgc3RhbmRhcmQgJ2dyYXlzY2FsZScgYW50
aWFsaWFzaW5nKTsgZmFsc2UgdG8gZXhwbGljaXRseSBkaXNhYmxlCisgICAgLy8gYW50aWFsaWFz
aW5nLgorICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0LmNyKCksIGVuYWJs
ZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOworfQor
Cit2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkKK3sKKyAgICBw
bGF0Zm9ybUNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShxdWFsaXR5KTsKK30K
Kwordm9pZCBzZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgY29uc3QgY2Fpcm9fbWF0cml4
X3QgbWF0cml4ID0gdG9DYWlyb01hdHJpeCh0cmFuc2Zvcm0pOworICAgIGNhaXJvX3NldF9tYXRy
aXgocGxhdGZvcm1Db250ZXh0LmNyKCksICZtYXRyaXgpOworfQorCitBZmZpbmVUcmFuc2Zvcm0g
Z2V0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCit7CisgICAgY2Fp
cm9fbWF0cml4X3QgbTsKKyAgICBjYWlyb19nZXRfbWF0cml4KHBsYXRmb3JtQ29udGV4dC5jcigp
LCAmbSk7CisgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShtLnh4LCBtLnl4LCBtLnh5LCBtLnl5
LCBtLngwLCBtLnkwKTsKK30KKwordm9pZCBzZXRTaGFkb3dWYWx1ZXMoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaWdub3JlVHJhbnNmb3Jt
cykKK3sKKyAgICBGbG9hdFNpemUgYWRqdXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKGln
bm9yZVRyYW5zZm9ybXMpIHsKKyAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3Mg
Y29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CisgICAg
ICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUg
b3Bwb3NpdGUgWSBheGlzCisgICAgICAgIGFkanVzdGVkT2Zmc2V0LnNldEhlaWdodCgtb2Zmc2V0
LmhlaWdodCgpKTsKKyAgICB9CisKKyAgICAvLyBDYWlybyBkb2Vzbid0IHN1cHBvcnQgc2hhZG93
cyBuYXRpdmVseSwgdGhleSBhcmUgZHJhd24gbWFudWFsbHkgaW4gdGhlIGRyYXcqIGZ1bmN0aW9u
cyB1c2luZyBTaGFkb3dCbHVyLgorICAgIHBsYXRmb3JtQ29udGV4dC5zaGFkb3dCbHVyKCkuc2V0
U2hhZG93VmFsdWVzKHJhZGl1cywgYWRqdXN0ZWRPZmZzZXQsIGNvbG9yLCBpZ25vcmVUcmFuc2Zv
cm1zKTsKK30KKwordm9pZCBjbGVhclNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0KQoreworICAgIHBsYXRmb3JtQ29udGV4dC5zaGFkb3dCbHVyKCkuY2xlYXIoKTsK
K30KKworSW50UmVjdCBnZXRDbGlwQm91bmRzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQpCit7CisgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOworICAgIGNhaXJvX2NsaXBf
ZXh0ZW50cyhwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKKyAgICBy
ZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkx
KSk7Cit9CisKK0Zsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBGbG9h
dFJlY3QgcmVzdWx0OworICAgIGRvdWJsZSB4ID0gcmVjdC54KCk7CisgICAgZG91YmxlIHkgPSBy
ZWN0LnkoKTsKKworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CisgICAg
Y2Fpcm9fdXNlcl90b19kZXZpY2UoY3IsICZ4LCAmeSk7CisgICAgeCA9IHJvdW5kKHgpOworICAg
IHkgPSByb3VuZCh5KTsKKyAgICBjYWlyb19kZXZpY2VfdG9fdXNlcihjciwgJngsICZ5KTsKKyAg
ICByZXN1bHQuc2V0WChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHgpKTsKKyAgICByZXN1bHQuc2V0
WShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHkpKTsKKworICAgIC8vIFdlIG11c3QgZW5zdXJlIHdp
ZHRoIGFuZCBoZWlnaHQgYXJlIGF0IGxlYXN0IDEgKG9yIC0xKSB3aGVuCisgICAgLy8gd2UncmUg
Z2l2ZW4gZmxvYXQgdmFsdWVzIGluIHRoZSByYW5nZSBiZXR3ZWVuIDAgYW5kIDEgKG9yIC0xIGFu
ZCAwKS4KKyAgICBkb3VibGUgd2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgZG91YmxlIGhlaWdo
dCA9IHJlY3QuaGVpZ2h0KCk7CisgICAgY2Fpcm9fdXNlcl90b19kZXZpY2VfZGlzdGFuY2UoY3Is
ICZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKHdpZHRoID4gLTEgJiYgd2lkdGggPCAwKQorICAg
ICAgICB3aWR0aCA9IC0xOworICAgIGVsc2UgaWYgKHdpZHRoID4gMCAmJiB3aWR0aCA8IDEpCisg
ICAgICAgIHdpZHRoID0gMTsKKyAgICBlbHNlCisgICAgICAgIHdpZHRoID0gcm91bmQod2lkdGgp
OworICAgIGlmIChoZWlnaHQgPiAtMSAmJiBoZWlnaHQgPCAwKQorICAgICAgICBoZWlnaHQgPSAt
MTsKKyAgICBlbHNlIGlmIChoZWlnaHQgPiAwICYmIGhlaWdodCA8IDEpCisgICAgICAgIGhlaWdo
dCA9IDE7CisgICAgZWxzZQorICAgICAgICBoZWlnaHQgPSByb3VuZChoZWlnaHQpOworICAgIGNh
aXJvX2RldmljZV90b191c2VyX2Rpc3RhbmNlKGNyLCAmd2lkdGgsICZoZWlnaHQpOworICAgIHJl
c3VsdC5zZXRXaWR0aChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdpZHRoKSk7CisgICAgcmVzdWx0
LnNldEhlaWdodChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGhlaWdodCkpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0KQoreworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90
eXBlKGNhaXJvX2dldF90YXJnZXQocGxhdGZvcm1Db250ZXh0LmNyKCkpKSA9PSBDQUlST19TVVJG
QUNFX1RZUEVfR0w7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFN0YXRlCiAKIHZvaWQgc2V0TGluZUNh
cChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBMaW5lQ2FwIGxpbmVDYXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5oCmluZGV4IDRkZGY4MTdmNmE5Y2UyNjU3YTkwYmEzMWUxYTdlNzczYTJk
ZDBkZTEuLmZjMzhjN2JlNDEwMDhlOTQwY2QwMzc4MTVmNzJmYTM1ZjY3ZjNlNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5oCkBAIC01Niw4ICs1NiwyNyBAQCBjbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybzsK
IG5hbWVzcGFjZSBDYWlybyB7CiAKIG5hbWVzcGFjZSBTdGF0ZSB7CisKK3ZvaWQgc2V0U3Ryb2tl
VGhpY2tuZXNzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQpOwogdm9pZCBzZXRTdHJva2VT
dHlsZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIFN0cm9rZVN0eWxlKTsKLX0KKwordm9pZCBzZXRH
bG9iYWxBbHBoYShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGZsb2F0KTsKK3ZvaWQgc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSk7Cit2b2lkIHNldFNob3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGJvb2wpOwordm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KFBsYXRmb3JtQ29udGV4
dENhaXJvJiwgSW50ZXJwb2xhdGlvblF1YWxpdHkpOworCit2b2lkIHNldENUTShQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworQWZmaW5lVHJhbnNmb3JtIGdl
dENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYpOworCit2b2lkIHNldFNoYWRvd1ZhbHVlcyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IENvbG9yJiwgYm9vbCk7Cit2b2lkIGNsZWFyU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJv
Jik7CisKK0ludFJlY3QgZ2V0Q2xpcEJvdW5kcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYpOworRmxv
YXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBG
bG9hdFJlY3QmKTsKKworYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChQbGF0Zm9ybUNvbnRleHRD
YWlybyYpOworCit9IC8vIG5hbWVzcGFjZSBTdGF0ZQogCiB2b2lkIHNldExpbmVDYXAoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBMaW5lQ2FwKTsKIHZvaWQgc2V0TGluZURhc2goUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKaW5kZXggMWZhNGVlOWUwOTIzY2E5MTRjODdmYjQwMmRhOWI1YzRlNjUzNjdjYy4u
ZTE5Y2JhMjI2ZGEwN2M0ZDkwY2QzZGQ5ZGFhOTBmYTYxMWI0ODg2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtMjAwLDEwICsyMDAsOCBAQCBBZmZpbmVUcmFuc2Zvcm0gR3Jh
cGhpY3NDb250ZXh0OjpnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlKSBjb25zdAogICAgICAgICBy
ZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19tYXRyaXhfdCBtOwotICAgIGNhaXJvX2dl
dF9tYXRyaXgoY3IsICZtKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKG0ueHgsIG0ueXgs
IG0ueHksIG0ueXksIG0ueDAsIG0ueTApOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0Q1RNKCpwbGF0Zm9ybUNvbnRleHQoKSk7
CiB9CiAKIFBsYXRmb3JtQ29udGV4dENhaXJvKiBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29u
dGV4dCgpIGNvbnN0CkBAIC0yMjQsMTAgKzIyMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgQ2Fpcm86OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4
dCgpKTsKICAgICBtX2RhdGEtPnJlc3RvcmUoKTsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5z
aGFkb3dCbHVyKCkuc2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIs
IG1fc3RhdGUuc2hhZG93Qmx1ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBDYWlybzo6U3RhdGU6OnNldFNoYWRv
d1ZhbHVlcygqcGxhdGZvcm1Db250ZXh0KCksIEZsb2F0U2l6ZSB7IG1fc3RhdGUuc2hhZG93Qmx1
ciwgbV9zdGF0ZS5zaGFkb3dCbHVyIH0sCisgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBt
X3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0K
IAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KQEAg
LTUwOCw5ICs1MDQsOCBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNv
bnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5NiwgNDA5Nik7IC8v
IEZJWE1FOiBkaXNwbGF5IGxpc3RzLgogICAgIH0KIAotICAgIGRvdWJsZSB4MSwgeDIsIHkxLCB5
MjsKLSAgICBjYWlyb19jbGlwX2V4dGVudHMocGxhdGZvcm1Db250ZXh0KCktPmNyKCksICZ4MSwg
JnkxLCAmeDIsICZ5Mik7Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHgx
LCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5kcygqcGxhdGZvcm1Db250
ZXh0KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQ
YXRoJiBwYXRoLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3Ip
CkBAIC02MTcsNDkgKzYxMiwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JE
b2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0CiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKLUZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiBmcmVjdCwgUm91bmRpbmdNb2RlKQorRmxvYXRSZWN0
IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIFJvdW5kaW5nTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICByZXR1cm4gZnJlY3Q7CisgICAgICAgIHJldHVybiByZWN0OwogCiAgICAgaWYgKG1faW1wbCkg
ewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBp
eGVscygpIGlzIG5vdCB5ZXQgY29tcGF0aWJsZSB3aXRoIHJlY29yZGluZyBjb250ZXh0cy4iKTsK
LSAgICAgICAgcmV0dXJuIGZyZWN0OworICAgICAgICByZXR1cm4gcmVjdDsKICAgICB9CiAKLSAg
ICBGbG9hdFJlY3QgcmVzdWx0OwotICAgIGRvdWJsZSB4ID0gZnJlY3QueCgpOwotICAgIGRvdWJs
ZSB5ID0gZnJlY3QueSgpOwotICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7Ci0gICAgY2Fpcm9fdXNlcl90b19kZXZpY2UoY3IsICZ4LCAmeSk7Ci0gICAgeCA9IHJvdW5k
KHgpOwotICAgIHkgPSByb3VuZCh5KTsKLSAgICBjYWlyb19kZXZpY2VfdG9fdXNlcihjciwgJngs
ICZ5KTsKLSAgICByZXN1bHQuc2V0WChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHgpKTsKLSAgICBy
ZXN1bHQuc2V0WShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHkpKTsKLQotICAgIC8vIFdlIG11c3Qg
ZW5zdXJlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGF0IGxlYXN0IDEgKG9yIC0xKSB3aGVuCi0gICAg
Ly8gd2UncmUgZ2l2ZW4gZmxvYXQgdmFsdWVzIGluIHRoZSByYW5nZSBiZXR3ZWVuIDAgYW5kIDEg
KG9yIC0xIGFuZCAwKS4KLSAgICBkb3VibGUgd2lkdGggPSBmcmVjdC53aWR0aCgpOwotICAgIGRv
dWJsZSBoZWlnaHQgPSBmcmVjdC5oZWlnaHQoKTsKLSAgICBjYWlyb191c2VyX3RvX2RldmljZV9k
aXN0YW5jZShjciwgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICBpZiAod2lkdGggPiAtMSAmJiB3aWR0
aCA8IDApCi0gICAgICAgIHdpZHRoID0gLTE7Ci0gICAgZWxzZSBpZiAod2lkdGggPiAwICYmIHdp
ZHRoIDwgMSkKLSAgICAgICAgd2lkdGggPSAxOwotICAgIGVsc2UKLSAgICAgICAgd2lkdGggPSBy
b3VuZCh3aWR0aCk7Ci0gICAgaWYgKGhlaWdodCA+IC0xICYmIGhlaWdodCA8IDApCi0gICAgICAg
IGhlaWdodCA9IC0xOwotICAgIGVsc2UgaWYgKGhlaWdodCA+IDAgJiYgaGVpZ2h0IDwgMSkKLSAg
ICAgICAgaGVpZ2h0ID0gMTsKLSAgICBlbHNlCi0gICAgICAgIGhlaWdodCA9IHJvdW5kKGhlaWdo
dCk7Ci0gICAgY2Fpcm9fZGV2aWNlX3RvX3VzZXJfZGlzdGFuY2UoY3IsICZ3aWR0aCwgJmhlaWdo
dCk7Ci0gICAgcmVzdWx0LnNldFdpZHRoKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkdGgpKTsK
LSAgICByZXN1bHQuc2V0SGVpZ2h0KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoaGVpZ2h0KSk7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtNjk1LDggKzY1OCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJv
a2VUaGlja25lc3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7Ci0KLSAgICBjYWlyb19zZXRfbGluZV93aWR0aChwbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNr
bmVzcygqcGxhdGZvcm1Db250ZXh0KCksIHN0cm9rZVRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0
eWxlKQpAQCAtNzM4LDI4ICs3MDAsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY29uc3Qg
Y2Fpcm9fbWF0cml4X3QgbWF0cml4ID0gdG9DYWlyb01hdHJpeCh0cmFuc2Zvcm0pOwotICAgIGNh
aXJvX3NldF9tYXRyaXgoY3IsICZtYXRyaXgpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRDVE0oKnBsYXRmb3JtQ29udGV4dCgpLCB0cmFu
c2Zvcm0pOwogICAgIG1fZGF0YS0+c2V0Q1RNKHRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0
LCBDb2xvciBjb25zdCYpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgewotICAgICAgICAvLyBNZWFuaW5n
IHRoYXQgdGhpcyBncmFwaGljcyBjb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQKLSAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFu
ZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKLSAgICAgICAgbV9zdGF0ZS5zaGFk
b3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
fQotCi0gICAgLy8gQ2Fpcm8gZG9lc24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0aXZlbHksIHRoZXkg
YXJlIGRyYXduIG1hbnVhbGx5IGluIHRoZSBkcmF3KiBmdW5jdGlvbnMgdXNpbmcgU2hhZG93Qmx1
ci4KLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVlcyhG
bG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2hh
ZG93T2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7
CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBDYWlybzo6U3RhdGU6OnNl
dFNoYWRvd1ZhbHVlcygqcGxhdGZvcm1Db250ZXh0KCksIEZsb2F0U2l6ZSB7IGJsdXIsIGJsdXIg
fSwKKyAgICAgICAgb2Zmc2V0LCBjb2xvciwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hhZG93KCkKQEAg
LTc2Nyw3ICs3MjAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRv
dygpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5jbGVhcigpOworICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ2Fpcm86OlN0YXRlOjpjbGVhclNoYWRvdygqcGxhdGZv
cm1Db250ZXh0KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRy
YW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCkBAIC04ODAsMTUgKzgzNCwxNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hdCBtaXRlcikKIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxwaGEoZmxvYXQgYWxwaGEpCiB7Ci0gICAgcGxhdGZv
cm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhhKTsKKyAgICBDYWlybzo6U3RhdGU6OnNl
dEdsb2JhbEFscGhhKCpwbGF0Zm9ybUNvbnRleHQoKSwgYWxwaGEpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NldF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgdG9DYWlyb09wZXJhdG9yKG9wLCBibGVuZE9wKSk7CisgICAgQVNTRVJUKGhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKKyAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlv
bigqcGxhdGZvcm1Db250ZXh0KCksIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2FudmFzQ2xpcChjb25zdCBQYXRoJiBwYXRoLCBXaW5k
UnVsZSB3aW5kUnVsZSkKQEAgLTEwMDEsMTggKzk1NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0KLSAgICAvLyBXaGVuIHRy
dWUsIHVzZSB0aGUgZGVmYXVsdCBDYWlybyBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5
IHRoaXMKLSAgICAvLyBlbmFibGVzIHN0YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7
IGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZQotICAgIC8vIGFudGlhbGlhc2luZy4KLSAgICBj
YWlyb19zZXRfYW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBlbmFibGUgPyBDQUlS
T19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKKyAgICBDYWlybzo6
U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqcGxhdGZvcm1Db250ZXh0KCksIGVuYWJsZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOwotCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkocXVhbGl0eSk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KCpwbGF0Zm9ybUNvbnRleHQoKSwgcXVhbGl0eSk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0CkBAIC0xMDIwLDcg
Kzk3MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNv
bnN0CiAgICAgaWYgKCFoYXNQbGF0Zm9ybUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoY2Fpcm9fZ2V0X3RhcmdldChw
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9HTDsKKyAgICBy
ZXR1cm4gQ2Fpcm86OlN0YXRlOjppc0FjY2VsZXJhdGVkQ29udGV4dCgqcGxhdGZvcm1Db250ZXh0
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326757</attachid>
            <date>2017-11-13 05:41:10 -0800</date>
            <delta_ts>2017-11-13 05:41:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-179610-20171113144109.patch</filename>
            <type>text/plain</type>
            <size>17156</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyY2Q0YmI2MzI0YTNl
NGQwM2Y1N2NmNGNkY2E0YWE2ZjA2MWY2Ny4uYWU4ZTg4ZjZmMzAwOGQ5OTU5ZGNmZmVkMDQ3MWRi
MDQ2YjJiMDM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE3LTExLTEzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbQ2Fpcm9dIE1vdmUg
c3RhdGUgY2hhbmdlIG9wZXJhdGlvbnMgZnJvbSBHcmFwaGljc0NvbnRleHRDYWlybyB0byBDYWly
b09wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgor
CisgICAgICAgIE1vdmUgb3BlcmF0aW9ucyB0aGF0IHBlcmZvcm0gQ2Fpcm8gc3RhdGUgY2hhbmdl
cyB0byB0aGUgQ2Fpcm9PcGVyYXRpb25zCisgICAgICAgIGZpbGUuIFRoaXMgZW5mb3JjZXMgb25s
eSB1c2luZyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gb2JqZWN0IHRvCisgICAgICAgIGFjaGll
dmUgdGhlIHN0YXRlIGNoYW5nZSwgbGV2ZXJhZ2luZyB0aGUgY2Fpcm9fdCBhbmQgU2hhZG93Qmx1
ciBvYmplY3RzCisgICAgICAgIHRoYXQgYXJlIG93bmVkIGJ5IFBsYXRmb3JtQ29udGV4dENhaXJv
LgorCisgICAgICAgIEFsb25nIHdpdGggc3RhdGUgbW9kaWZpY2F0aW9uIG9wZXJhdGlvbnMsIHZh
cmlvdXMgc3RhdGUgcXVlcnkgb3BlcmF0aW9ucworICAgICAgICBhcmUgYWxzbyBwbGFjZWQgdW5k
ZXIgdGhlIENhaXJvOjpTdGF0ZSBuYW1lc3BhY2UsIGFnYWluIGxpbWl0ZWQgdG8gdGhlCisgICAg
ICAgIFBsYXRmb3JtQ29udGV4dENhaXJvIG9iamVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMg
LS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0
ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6
c2V0R2xvYmFsQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRDb21w
b3NpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRTaG91
bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0
Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6Z2V0Q1RNKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6c2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpTdGF0ZTo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86
OlN0YXRlOjpnZXRDbGlwQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTdGF0ZTo6
cm91bmRUb0RldmljZVBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3RhdGU6Omlz
QWNjZWxlcmF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmdldENUTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3Rv
cmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xp
cEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5k
VG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0
Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQgY29uc3QpOgor
CisyMDE3LTExLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbQ2Fpcm9dIE1vdmUgZ2x5cGggZHJhd2luZyBvcGVyYXRpb25zIGZyb20gRm9udENhaXJv
IHRvIENhaXJvT3BlcmF0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc5NjA5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDFmMmE2OWIwZjZh
MGVhMDdjMzlhYjFkNGExN2MxZmNjY2VhNDMzN2UuLjNlMGVhZjY0MzA5MTg4YmU0NzA4MDg3Yjc4
NDYwYWMyOWQwNTk0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
CiAjaWYgVVNFKENBSVJPKQogCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKQEAgLTIxMSw2ICsyMTIsMTEgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRv
dyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBHcmFwaGkKIAog
bmFtZXNwYWNlIFN0YXRlIHsKIAordm9pZCBzZXRTdHJva2VUaGlja25lc3MoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQoreworICAg
IGNhaXJvX3NldF9saW5lX3dpZHRoKHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdHJva2VUaGlja25l
c3MpOworfQorCiB2b2lkIHNldFN0cm9rZVN0eWxlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogewogICAgIHN0YXRpYyBjb25z
dCBkb3VibGUgZGFzaFBhdHRlcm5bXSA9IHsgNS4wLCA1LjAgfTsKQEAgLTIzNyw2ICsyNDMsMTEw
IEBAIHZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5CiAgICAgfQogfQogCit2b2lkIHNldEdsb2JhbEFs
cGhhKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IGFscGhhKQor
eworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRHbG9iYWxBbHBoYShhbHBoYSk7Cit9CisKK3ZvaWQg
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3sKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IocGxhdGZvcm1Db250ZXh0LmNyKCksIHRv
Q2Fpcm9PcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSkpOworfQorCit2b2lk
IHNldFNob3VsZEFudGlhbGlhcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
LCBib29sIGVuYWJsZSkKK3sKKyAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUgZGVmYXVsdCBDYWly
byBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKKyAgICAvLyBlbmFibGVzIHN0
YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlz
YWJsZQorICAgIC8vIGFudGlhbGlhc2luZy4KKyAgICBjYWlyb19zZXRfYW50aWFsaWFzKHBsYXRm
b3JtQ29udGV4dC5jcigpLCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJP
X0FOVElBTElBU19OT05FKTsKK30KKwordm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEludGVycG9sYXRpb25RdWFs
aXR5IHF1YWxpdHkpCit7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkocXVhbGl0eSk7Cit9CisKK3ZvaWQgc2V0Q1RNKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQorewor
ICAgIGNvbnN0IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgodHJhbnNmb3Jt
KTsKKyAgICBjYWlyb19zZXRfbWF0cml4KHBsYXRmb3JtQ29udGV4dC5jcigpLCAmbWF0cml4KTsK
K30KKworQWZmaW5lVHJhbnNmb3JtIGdldENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0KQoreworICAgIGNhaXJvX21hdHJpeF90IG07CisgICAgY2Fpcm9fZ2V0X21hdHJp
eChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgJm0pOworICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
bS54eCwgbS55eCwgbS54eSwgbS55eSwgbS54MCwgbS55MCk7Cit9CisKK3ZvaWQgc2V0U2hhZG93
VmFsdWVzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCit7CisgICAgRmxvYXRTaXplIGFkanVzdGVkT2Zmc2V0
ID0gb2Zmc2V0OworICAgIGlmIChpZ25vcmVUcmFuc2Zvcm1zKSB7CisgICAgICAgIC8vIE1lYW5p
bmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dAorICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cg
YW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcworICAgICAgICBhZGp1c3RlZE9m
ZnNldC5zZXRIZWlnaHQoLW9mZnNldC5oZWlnaHQoKSk7CisgICAgfQorCisgICAgLy8gQ2Fpcm8g
ZG9lc24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5
IGluIHRoZSBkcmF3KiBmdW5jdGlvbnMgdXNpbmcgU2hhZG93Qmx1ci4KKyAgICBwbGF0Zm9ybUNv
bnRleHQuc2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVlcyhyYWRpdXMsIGFkanVzdGVkT2Zmc2V0
LCBjb2xvciwgaWdub3JlVHJhbnNmb3Jtcyk7Cit9CisKK3ZvaWQgY2xlYXJTaGFkb3coUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK3sKKyAgICBwbGF0Zm9ybUNvbnRleHQu
c2hhZG93Qmx1cigpLmNsZWFyKCk7Cit9CisKK0ludFJlY3QgZ2V0Q2xpcEJvdW5kcyhQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQoreworICAgIGRvdWJsZSB4MSwgeDIsIHkx
LCB5MjsKKyAgICBjYWlyb19jbGlwX2V4dGVudHMocGxhdGZvcm1Db250ZXh0LmNyKCksICZ4MSwg
JnkxLCAmeDIsICZ5Mik7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHgx
LCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworfQorCitGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBp
eGVscyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit7CisgICAgRmxvYXRSZWN0IHJlc3VsdDsKKyAgICBkb3VibGUgeCA9IHJlY3Qu
eCgpOworICAgIGRvdWJsZSB5ID0gcmVjdC55KCk7CisKKyAgICBjYWlyb190KiBjciA9IHBsYXRm
b3JtQ29udGV4dC5jcigpOworICAgIGNhaXJvX3VzZXJfdG9fZGV2aWNlKGNyLCAmeCwgJnkpOwor
ICAgIHggPSByb3VuZCh4KTsKKyAgICB5ID0gcm91bmQoeSk7CisgICAgY2Fpcm9fZGV2aWNlX3Rv
X3VzZXIoY3IsICZ4LCAmeSk7CisgICAgcmVzdWx0LnNldFgobmFycm93UHJlY2lzaW9uVG9GbG9h
dCh4KSk7CisgICAgcmVzdWx0LnNldFkobmFycm93UHJlY2lzaW9uVG9GbG9hdCh5KSk7CisKKyAg
ICAvLyBXZSBtdXN0IGVuc3VyZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhdCBsZWFzdCAxIChvciAt
MSkgd2hlbgorICAgIC8vIHdlJ3JlIGdpdmVuIGZsb2F0IHZhbHVlcyBpbiB0aGUgcmFuZ2UgYmV0
d2VlbiAwIGFuZCAxIChvciAtMSBhbmQgMCkuCisgICAgZG91YmxlIHdpZHRoID0gcmVjdC53aWR0
aCgpOworICAgIGRvdWJsZSBoZWlnaHQgPSByZWN0LmhlaWdodCgpOworICAgIGNhaXJvX3VzZXJf
dG9fZGV2aWNlX2Rpc3RhbmNlKGNyLCAmd2lkdGgsICZoZWlnaHQpOworICAgIGlmICh3aWR0aCA+
IC0xICYmIHdpZHRoIDwgMCkKKyAgICAgICAgd2lkdGggPSAtMTsKKyAgICBlbHNlIGlmICh3aWR0
aCA+IDAgJiYgd2lkdGggPCAxKQorICAgICAgICB3aWR0aCA9IDE7CisgICAgZWxzZQorICAgICAg
ICB3aWR0aCA9IHJvdW5kKHdpZHRoKTsKKyAgICBpZiAoaGVpZ2h0ID4gLTEgJiYgaGVpZ2h0IDwg
MCkKKyAgICAgICAgaGVpZ2h0ID0gLTE7CisgICAgZWxzZSBpZiAoaGVpZ2h0ID4gMCAmJiBoZWln
aHQgPCAxKQorICAgICAgICBoZWlnaHQgPSAxOworICAgIGVsc2UKKyAgICAgICAgaGVpZ2h0ID0g
cm91bmQoaGVpZ2h0KTsKKyAgICBjYWlyb19kZXZpY2VfdG9fdXNlcl9kaXN0YW5jZShjciwgJndp
ZHRoLCAmaGVpZ2h0KTsKKyAgICByZXN1bHQuc2V0V2lkdGgobmFycm93UHJlY2lzaW9uVG9GbG9h
dCh3aWR0aCkpOworICAgIHJlc3VsdC5zZXRIZWlnaHQobmFycm93UHJlY2lzaW9uVG9GbG9hdCho
ZWlnaHQpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgaXNBY2NlbGVyYXRlZENv
bnRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKK3sKKyAgICByZXR1
cm4gY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShjYWlyb19nZXRfdGFyZ2V0KHBsYXRmb3JtQ29udGV4
dC5jcigpKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0dMOworfQorCiB9IC8vIG5hbWVzcGFjZSBT
dGF0ZQogCiB2b2lkIHNldExpbmVDYXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA0ZGRmODE3ZjZhOWNl
MjY1N2E5MGJhMzFlMWE3ZTc3M2EyZGQwZGUxLi5mYzM4YzdiZTQxMDA4ZTk0MGNkMDM3ODE1Zjcy
ZmEzNWY2N2YzZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtNTYsOCArNTYsMjcgQEAgY2xhc3Mg
UGxhdGZvcm1Db250ZXh0Q2Fpcm87CiBuYW1lc3BhY2UgQ2Fpcm8gewogCiBuYW1lc3BhY2UgU3Rh
dGUgeworCit2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGZs
b2F0KTsKIHZvaWQgc2V0U3Ryb2tlU3R5bGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBTdHJva2VT
dHlsZSk7Ci19CisKK3ZvaWQgc2V0R2xvYmFsQWxwaGEoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBm
bG9hdCk7Cit2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBzZXRTaG91bGRBbnRpYWxpYXMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBib29sKTsKK3ZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIEludGVycG9sYXRpb25RdWFsaXR5KTsKKwor
dm9pZCBzZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKK0FmZmluZVRyYW5zZm9ybSBnZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKKwordm9p
ZCBzZXRTaGFkb3dWYWx1ZXMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYsIGJvb2wpOwordm9pZCBjbGVhclNoYWRv
dyhQbGF0Zm9ybUNvbnRleHRDYWlybyYpOworCitJbnRSZWN0IGdldENsaXBCb3VuZHMoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mKTsKK0Zsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CisKK2Jvb2wgaXNBY2NlbGVyYXRlZENv
bnRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKKworfSAvLyBuYW1lc3BhY2UgU3RhdGUKIAog
dm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgTGluZUNhcCk7CiB2b2lkIHNl
dExpbmVEYXNoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRGFzaEFycmF5JiwgZmxvYXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDFmYTRlZTllMDkyM2NhOTE0Yzg3
ZmI0MDJkYTliNWM0ZTY1MzY3Y2MuLmUxOWNiYTIyNmRhMDdjNGQ5MGNkM2RkOWRhYTkwZmE2MTFi
NDg4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTIwMCwxMCArMjAwLDgg
QEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VT
Y2FsZSkgY29uc3QKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogICAgIH0KIAot
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fbWF0
cml4X3QgbTsKLSAgICBjYWlyb19nZXRfbWF0cml4KGNyLCAmbSk7Ci0gICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybShtLnh4LCBtLnl4LCBtLnh5LCBtLnl5LCBtLngwLCBtLnkwKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIHJldHVybiBDYWlybzo6U3RhdGU6OmdldENU
TSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCiBQbGF0Zm9ybUNvbnRleHRDYWlybyogR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdApAQCAtMjI0LDEwICsyMjIsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIENhaXJvOjpy
ZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiAKLSAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVlcyhGbG9hdFNp
emUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUuc2hhZG93Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAg
Q2Fpcm86OlN0YXRlOjpzZXRTaGFkb3dWYWx1ZXMoKnBsYXRmb3JtQ29udGV4dCgpLCBGbG9hdFNp
emUgeyBtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciB9LAorICAgICAgICBt
X3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRo
IGEgc3Ryb2tlZCBib3JkZXIuCkBAIC01MDgsOSArNTA0LDggQEAgSW50UmVjdCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdAogICAgICAgICByZXR1cm4gSW50UmVjdCgtMjA0OCwg
LTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBGSVhNRTogZGlzcGxheSBsaXN0cy4KICAgICB9CiAKLSAg
ICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7Ci0gICAgY2Fpcm9fY2xpcF9leHRlbnRzKHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCAmeDEsICZ5MSwgJngyLCAmeTIpOwotICAgIHJldHVybiBlbmNsb3Np
bmdJbnRSZWN0KEZsb2F0UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKKyAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIHJldHVybiBDYWlybzo6U3RhdGU6OmdldENs
aXBCb3VuZHMoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNjE3LDQ5ICs2MTIsMTcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgb3Jp
Z2luLCBmbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1GbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgZnJlY3QsIFJv
dW5kaW5nTW9kZSkKK0Zsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01vZGUpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZyZWN0OworICAgICAgICByZXR1cm4gcmVj
dDsKIAogICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0Nv
bnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCBy
ZWNvcmRpbmcgY29udGV4dHMuIik7Ci0gICAgICAgIHJldHVybiBmcmVjdDsKKyAgICAgICAgcmV0
dXJuIHJlY3Q7CiAgICAgfQogCi0gICAgRmxvYXRSZWN0IHJlc3VsdDsKLSAgICBkb3VibGUgeCA9
IGZyZWN0LngoKTsKLSAgICBkb3VibGUgeSA9IGZyZWN0LnkoKTsKLSAgICBjYWlyb190KiBjciA9
IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGNhaXJvX3VzZXJfdG9fZGV2aWNlKGNyLCAm
eCwgJnkpOwotICAgIHggPSByb3VuZCh4KTsKLSAgICB5ID0gcm91bmQoeSk7Ci0gICAgY2Fpcm9f
ZGV2aWNlX3RvX3VzZXIoY3IsICZ4LCAmeSk7Ci0gICAgcmVzdWx0LnNldFgobmFycm93UHJlY2lz
aW9uVG9GbG9hdCh4KSk7Ci0gICAgcmVzdWx0LnNldFkobmFycm93UHJlY2lzaW9uVG9GbG9hdCh5
KSk7Ci0KLSAgICAvLyBXZSBtdXN0IGVuc3VyZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhdCBsZWFz
dCAxIChvciAtMSkgd2hlbgotICAgIC8vIHdlJ3JlIGdpdmVuIGZsb2F0IHZhbHVlcyBpbiB0aGUg
cmFuZ2UgYmV0d2VlbiAwIGFuZCAxIChvciAtMSBhbmQgMCkuCi0gICAgZG91YmxlIHdpZHRoID0g
ZnJlY3Qud2lkdGgoKTsKLSAgICBkb3VibGUgaGVpZ2h0ID0gZnJlY3QuaGVpZ2h0KCk7Ci0gICAg
Y2Fpcm9fdXNlcl90b19kZXZpY2VfZGlzdGFuY2UoY3IsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAg
aWYgKHdpZHRoID4gLTEgJiYgd2lkdGggPCAwKQotICAgICAgICB3aWR0aCA9IC0xOwotICAgIGVs
c2UgaWYgKHdpZHRoID4gMCAmJiB3aWR0aCA8IDEpCi0gICAgICAgIHdpZHRoID0gMTsKLSAgICBl
bHNlCi0gICAgICAgIHdpZHRoID0gcm91bmQod2lkdGgpOwotICAgIGlmIChoZWlnaHQgPiAtMSAm
JiBoZWlnaHQgPCAwKQotICAgICAgICBoZWlnaHQgPSAtMTsKLSAgICBlbHNlIGlmIChoZWlnaHQg
PiAwICYmIGhlaWdodCA8IDEpCi0gICAgICAgIGhlaWdodCA9IDE7Ci0gICAgZWxzZQotICAgICAg
ICBoZWlnaHQgPSByb3VuZChoZWlnaHQpOwotICAgIGNhaXJvX2RldmljZV90b191c2VyX2Rpc3Rh
bmNlKGNyLCAmd2lkdGgsICZoZWlnaHQpOwotICAgIHJlc3VsdC5zZXRXaWR0aChuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHdpZHRoKSk7Ci0gICAgcmVzdWx0LnNldEhlaWdodChuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KGhlaWdodCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ2Fp
cm86OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkK
QEAgLTY5NSw4ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJv
a2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgY2Fpcm9fc2V0X2xpbmVfd2lk
dGgocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ2Fpcm86
OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnBsYXRmb3JtQ29udGV4dCgpLCBzdHJva2VUaGlj
a25lc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VTdHls
ZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKQEAgLTczOCwyOCArNzAwLDE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwotICAgIGNvbnN0IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRy
aXgodHJhbnNmb3JtKTsKLSAgICBjYWlyb19zZXRfbWF0cml4KGNyLCAmbWF0cml4KTsKKyAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIENhaXJvOjpTdGF0ZTo6c2V0Q1RNKCpw
bGF0Zm9ybUNvbnRleHQoKSwgdHJhbnNmb3JtKTsKICAgICBtX2RhdGEtPnNldENUTSh0cmFuc2Zv
cm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRT
aXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29uc3QmKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVy
LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
IHsKLSAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3Nv
Y2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ci0gICAgICAgIC8vIFdlIGZsaXAg
dGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlz
Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwg
LXNpemUuaGVpZ2h0KCkpOwotICAgIH0KLQotICAgIC8vIENhaXJvIGRvZXNuJ3Qgc3VwcG9ydCBz
aGFkb3dzIG5hdGl2ZWx5LCB0aGV5IGFyZSBkcmF3biBtYW51YWxseSBpbiB0aGUgZHJhdyogZnVu
Y3Rpb25zIHVzaW5nIFNoYWRvd0JsdXIuCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKS5zZXRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0
ZS5zaGFkb3dCbHVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaGFkb3dWYWx1ZXMoKnBsYXRmb3JtQ29udGV4dCgpLCBG
bG9hdFNpemUgeyBibHVyLCBibHVyIH0sCisgICAgICAgIG9mZnNldCwgY29sb3IsIG1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xl
YXJQbGF0Zm9ybVNoYWRvdygpCkBAIC03NjcsNyArNzIwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuY2xl
YXIoKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOworICAgIENhaXJvOjpTdGF0
ZTo6Y2xlYXJTaGFkb3coKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQpAQCAt
ODgwLDE1ICs4MzQsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxv
YXQgbWl0ZXIpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKGZsb2F0
IGFscGhhKQogewotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBoYShhbHBoYSk7
CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRHbG9iYWxBbHBoYSgqcGxhdGZvcm1Db250ZXh0KCksIGFs
cGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRPcCkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19zZXRfb3Bl
cmF0b3IocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHRvQ2Fpcm9PcGVyYXRvcihvcCwgYmxlbmRP
cCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oKnBsYXRmb3JtQ29udGV4dCgpLCBjb21wb3NpdGVPcGVy
YXRvciwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbnZhc0NsaXAo
Y29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgd2luZFJ1bGUpCkBAIC0xMDAxLDE4ICs5NTYsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wg
ZW5hYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0
KCkpOwotCi0gICAgLy8gV2hlbiB0cnVlLCB1c2UgdGhlIGRlZmF1bHQgQ2Fpcm8gYmFja2VuZCBh
bnRpYWxpYXMgbW9kZSAodXN1YWxseSB0aGlzCi0gICAgLy8gZW5hYmxlcyBzdGFuZGFyZCAnZ3Jh
eXNjYWxlJyBhbnRpYWxpYXNpbmcpOyBmYWxzZSB0byBleHBsaWNpdGx5IGRpc2FibGUKLSAgICAv
LyBhbnRpYWxpYXNpbmcuCi0gICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgZW5hYmxlID8gQ0FJUk9fQU5USUFMSUFTX0RFRkFVTFQgOiBDQUlST19BTlRJQUxJ
QVNfTk9ORSk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMoKnBsYXRmb3Jt
Q29udGV4dCgpLCBlbmFibGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkp
CiB7CiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLQotICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHF1YWxpdHkpOworICAgIENhaXJv
OjpTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgqcGxhdGZvcm1Db250ZXh0KCks
IHF1YWxpdHkpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSBjb25zdApAQCAtMTAyMCw3ICs5NzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNB
Y2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogICAgIGlmICghaGFzUGxhdGZvcm1Db250ZXh0KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90
eXBlKGNhaXJvX2dldF90YXJnZXQocGxhdGZvcm1Db250ZXh0KCktPmNyKCkpKSA9PSBDQUlST19T
VVJGQUNFX1RZUEVfR0w7CisgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6aXNBY2NlbGVyYXRlZENv
bnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>