<?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>126994</bug_id>
          
          <creation_ts>2014-01-14 10:38:22 -0800</creation_ts>
          <short_desc>[WebGL2] Multiple Render Targets</short_desc>
          <delta_ts>2020-04-28 17:07:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (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>
          
          <blocked>126404</blocked>
    
    <blocked>211156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967919</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-01-14 10:38:22 -0800</bug_when>
    <thetext>void drawBuffers(sequence&lt;GLenum&gt; buffers);
  void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32Array value);
  void clearBufferiv(GLenum buffer, GLint drawbuffer, sequence&lt;GLint&gt; value);
  void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32Array value);
  void clearBufferuiv(GLenum buffer, GLint drawbuffer, sequence&lt;GLuint&gt; value);
  void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32Array value);
  void clearBufferfv(GLenum buffer, GLint drawbuffer, sequence&lt;GLfloat&gt; value);
  void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967925</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-01-14 10:41:38 -0800</bug_when>
    <thetext>This would also be exposed as the WebGL extension
http://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968172</commentid>
    <comment_count>2</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-01-14 22:14:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/15815766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077038</commentid>
    <comment_count>3</comment_count>
      <attachid>248609</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-03-13 15:17:49 -0700</bug_when>
    <thetext>Created attachment 248609
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077040</commentid>
    <comment_count>4</comment_count>
      <attachid>248611</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-03-13 15:23:01 -0700</bug_when>
    <thetext>Created attachment 248611
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077530</commentid>
    <comment_count>5</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-03-16 12:32:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181573</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248609</attachid>
            <date>2015-03-13 15:17:49 -0700</date>
            <delta_ts>2015-03-13 15:23:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>20745</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTEzICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMMl0gTXVsdGlwbGUg
UmVuZGVyIFRhcmdldHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjY5OTQuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTgxNTc2Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgYSBt
b2RpZmllZCB2ZXJzaW9uIG9mIHRoZSAxLjAuMyBjb25mb3JtYW5jZSB0ZXN0OgorICAgICAgICBj
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy5odG1sCisgICAgICAgIFRo
aXMgdGVzdCB3aWxsIGJlIGxhbmRlZCBhbG9uZyB3aXRoIG90aGVyIG1vZGlmaWVkIGV4dGVuc2lv
biBjb25mb3JtYW5jZSB0ZXN0cworICAgICAgICBvbmNlIGFwcHJvdmFsIGZyb20gS2hyb25vcyBp
cyByZWNlaXZlZC4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1
ZmZlcnMpOiBNb3N0bHkgdGhlIHNhbWUgYXMgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNX
RUJHTC4KKyAgICAgICAgUmV0dXJucyBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZXMsIHVzZXMgbm9u
IEVYVCBlbnVtcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNs
ZWFyQnVmZmVyaXYpOiBUaGlzIGFjdHVhbGx5IGRvZXMgbm90aGluZyBmb3Igbm93IGJ1dCB0aGUg
dmFsaWRhdGlvbiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZpKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUZy
YW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMpOiBSZW1vdmVzIHRoZSBleHRlbnNpb24gb2JqZWN0IGNo
ZWNrLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJh
d0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
TWF4Q29sb3JBdHRhY2htZW50cyk6IE11c3QgcmV0dXJuIHRoZSBzYW1lIHRoaW5nIGFzIGdldE1h
eERyYXdCdWZmZXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKTogUmVtb3ZlIGV4dGVuc2lvbiBvYmplY3QgY2hlY2tzLgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVi
dWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyk6IENvcGllZCBmcm9t
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5j
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oOgorCiAyMDE1LTAzLTEzICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaXRlcyB0aGF0IHVzZSBhIGRldmljZS13aWR0
aCB2aWV3cG9ydCBidXQgZG9uJ3QgaGF2ZSBlbm91Z2ggaGVpZ2h0IHRvIGZpbGwgdGhlIHZpZXcg
YXJlIHNjYWxlZCB1cApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzYsMzYgKzQ3NiwxMjkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpkcmF3UmFuZ2VFbAogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJz
KFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVycyk7
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEdDM0RzaXpl
aSBuID0gYnVmZmVycy5zaXplKCk7CisgICAgY29uc3QgR0MzRGVudW0qIGJ1ZnMgPSBidWZmZXJz
LmRhdGEoKTsKKyAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CisgICAgICAgIGlmIChu
ICE9IDEpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnMiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnVmc1swXSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6QkFDSyAmJiBidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dDNEOjpO
T05FKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVycyIsICJCQUNLIG9yIE5PTkUiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVm
ZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8g
Y2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCisgICAgICAgIEdDM0RlbnVtIHZhbHVl
ID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkU7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwg
JnZhbHVlKTsKKyAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CisgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImRyYXdC
dWZmZXJzIiwgIm1vcmUgdGhhbiBtYXggZHJhdyBidWZmZXJzIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChHQzNEc2l6ZWkgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FICYm
IGJ1ZnNbaV0gIT0gc3RhdGljX2Nhc3Q8R0MzRGVudW0+KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCArIGkpKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnMiLCAiQ09M
T1JfQVRUQUNITUVOVGkgb3IgTk9ORSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1
ZmZlcnMoYnVmZmVycyk7CisgICAgfQogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyQnVmZmVyaXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIEludDMy
QXJyYXkqIHZhbHVlKQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9Q
QVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHN3aXRjaCAo
YnVmZmVyKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1I6CisgICAgICAgIGlm
IChkcmF3YnVmZmVyIDwgMCB8fCBkcmF3YnVmZmVyID49IGdldE1heERyYXdCdWZmZXJzKCkpIHsK
KyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFLCAiY2xlYXJCdWZmZXJpdiIsICJidWZmZXIgaW5kZXggb3V0IG9mIHJhbmdlIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBjbGVh
ckJ1ZmZlcml2LCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTDoKKyAgICAgICAgaWYgKGRyYXdidWZm
ZXIpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCAiY2xlYXJCdWZmZXJpdiIsICJidWZmZXIgaW5kZXggbXVzdCBiZSAwIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBj
bGVhckJ1ZmZlcml2LCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEg6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZl
cml2IiwgImJ1ZmZlciBhcmd1bWVudCBtdXN0IGJlIENPTE9SIG9yIFNURU5DSUwiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFy
QnVmZmVydWl2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBVaW50MzJBcnJh
eSogdmFsdWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgc3dpdGNoIChidWZm
ZXIpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUjoKKyAgICAgICAgaWYgKGRy
YXdidWZmZXIgPCAwIHx8IGRyYXdidWZmZXIgPj0gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgeworICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJjbGVhckJ1ZmZlcnVpdiIsICJidWZmZXIgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBjbGVhckJ1
ZmZlcnVpdiwgcmVxdWlyZXMgZ2wzLmggYW5kIEVTMy9nbC5oCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUw6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoK
KyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcnVpdiIsICJidWZmZXIgYXJndW1lbnQg
bXVzdCBiZSBDT0xPUiIpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQg
ZHJhd2J1ZmZlciwgRmxvYXQzMkFycmF5KiB2YWx1ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVm
ZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICBzd2l0Y2ggKGJ1ZmZlcikgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SOgorICAgICAgICBpZiAoZHJhd2J1ZmZlciA8IDAgfHwgZHJhd2J1ZmZlciA+PSBnZXRN
YXhEcmF3QnVmZmVycygpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNsZWFyQnVmZmVyZnYiLCAiYnVmZmVyIGluZGV4
IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IC8vIFRPRE86IENhbGwgY2xlYXJCdWZmZXJmdiwgcmVxdWlyZXMgZ2wzLmggYW5kIEVTMy9nbC5o
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIOgorICAg
ICAgICBpZiAoZHJhd2J1ZmZlcikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjbGVhckJ1ZmZlcmZ2IiwgImJ1ZmZlciBp
bmRleCBtdXN0IGJlIDAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAvLyBUT0RPOiBDYWxsIGNsZWFyQnVmZmVyZnYsIHJlcXVpcmVzIGdsMy5oIGFuZCBFUzMvZ2wu
aAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCAiY2xlYXJCdWZmZXJmdiIsICJidWZmZXIgYXJndW1lbnQgbXVzdCBiZSBDT0xPUiBP
UiBERVBUSCIpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmaShHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1
ZmZlciwgR0MzRGZsb2F0IGRlcHRoLCBHQzNEaW50IHN0ZW5jaWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9Q
QVJBTShkZXB0aCk7CiAgICAgVU5VU0VEX1BBUkFNKHN0ZW5jaWwpOworICAgIHN3aXRjaCAoYnVm
ZmVyKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICAg
ICAgaWYgKGRyYXdidWZmZXIpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY2xlYXJCdWZmZXJmdiIsICJidWZmZXIgaW5k
ZXggbXVzdCBiZSAwIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Ly8gVE9ETzogQ2FsbCBjbGVhckJ1ZmZlcmZpLCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1I6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTDoKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcmZ2IiwgImJ1ZmZl
ciBhcmd1bWVudCBtdXN0IGJlIERFUFRIX1NURU5DSUwiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogfQogCiBQYXNzUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZVF1ZXJ5KCkKQEAgLTk3OCw2ICsxMDcxLDQzIEBAIFdlYkdMR2V0SW5mbyBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXQKICAgICB9CiB9CiAKK2Jvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50KQoreworICAgIGlmICh0
YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgdGFyZ2V0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
c3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDA6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoYXR0YWNobWVudCA+IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAorICAgICAgICAgICAgJiYgYXR0YWNobWVudCA8
IHN0YXRpY19jYXN0PEdDM0RlbnVtPihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAgKyBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIpOworICAgICAgICByZXR1cm4gZmFsc2U7
IGQKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dDM0RpbnQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0TWF4RHJhd0J1ZmZlcnMoKQoreworICAgIGlmICghbV9tYXhEcmF3QnVmZmVy
cykKKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X0RSQVdfQlVGRkVSUywgJm1fbWF4RHJhd0J1ZmZlcnMpOworICAgIHJldHVybiBtX21heERyYXdC
dWZmZXJzOworfQorCitHQzNEaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9y
QXR0YWNobWVudHMoKQoreworICAgIC8vIERyYXdCdWZmZXJzIHJlcXVpcmVzIE1BWF9DT0xPUl9B
VFRBQ0hNRU5UUyA9PSBNQVhfRFJBV19CVUZGRVJTCisgICAgaWYgKCFtX21heENvbG9yQXR0YWNo
bWVudHMpCisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6
Ok1BWF9EUkFXX0JVRkZFUlMsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgIHJldHVybiBt
X21heENvbG9yQXR0YWNobWVudHM7Cit9CisKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKQEAgLTIxNTYsOCArMjI4Niw2IEBAIFdlYkdMR2V0SW5mbyBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXQKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJh
bWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOSUZPUk1fQlVGRkVS
X09GRlNFVF9BTElHTk1FTlQ6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUp
OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPUFlfUkVBRF9CVUZGRVI6Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6Q09QWV9XUklURV9CVUZGRVI6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RFJBV19CVUZGRVIwOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRS
QVdfQlVGRkVSMToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEUkFXX0JVRkZFUjI6CkBA
IC0yMTczLDcgKzIzMDEsMTYgQEAgV2ViR0xHZXRJbmZvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRSQVdfQlVGRkVSMTI6CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6RFJBV19CVUZGRVIxMzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpEUkFXX0JVRkZFUjE0OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRSQVdf
QlVGRkVSMTU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RFJBV19CVUZGRVIxNTogewor
ICAgICAgICBHQzNEaW50IHZhbHVlID0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkU7CisgICAgICAg
IGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykKKyAgICAgICAgICAgIHZhbHVlID0gbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPmdldERyYXdCdWZmZXIocG5hbWUpOworICAgICAgICBlbHNlIC8vIGVtdWxh
dGVkIGJhY2tidWZmZXIKKyAgICAgICAgICAgIHZhbHVlID0gbV9iYWNrRHJhd0J1ZmZlcjsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7CisgICAgICAgIH0KKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpDT1BZX1JFQURfQlVGRkVSOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPUFlfV1JJVEVfQlVGRkVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBJ
WEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc6ICAgCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlJFQURfQlVGRkVSOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTgxNDEzKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksNiArMTg5LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIEdDM0RpbnQgZ2V0TWF4RHJhd0J1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IEdDM0RpbnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVudW0gdHlwZSwgdW5zaWdu
ZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB2YWxp
ZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUs
IEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgdW5zaWdu
ZWQmIG51bUVsZW1lbnRzLCBHQzNEc2l6ZWkgcHJpbWl0aXZlQ291bnQpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQzNEZW51bSBtb2RlKSBvdmVycmlkZTsKQEAgLTIwNSw2ICsyMDcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLAogICAgICAgICBOdWxsRGlzcG9z
aXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBjYXApIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRl
OwogICAgIAogcHJpdmF0ZToKICAgICBHQzNEZW51bSBiYXNlSW50ZXJuYWxGb3JtYXRGcm9tSW50
ZXJuYWxGb3JtYXQoR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHJldmlzaW9uIDE4MTQx
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpk
cmF3QnVmZmVycyhjb25zdAogCiB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZO
ZWNlc3NhcnkoYm9vbCBmb3JjZSkKIHsKLSAgICBpZiAoIWNvbnRleHQoKS0+bV93ZWJnbERyYXdC
dWZmZXJzKQorICAgIGlmICghY29udGV4dCgpLT5tX3dlYmdsRHJhd0J1ZmZlcnMgJiYgIWNvbnRl
eHQoKS0+aXNXZWJHTDIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgcmVzZXQgPSBmb3Jj
ZTsKICAgICAvLyBUaGlzIGZpbHRlcmluZyB3b3JrcyBhcm91bmQgZ3JhcGhpY3MgZHJpdmVyIGJ1
Z3Mgb24gTWFjIE9TIFguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MSw2ICszNTEsMjkgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RgogICAgIH0KIH0KIAorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlk
YXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCkKK3sKKyAgICBpZiAodGFyZ2V0ICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgeworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZh
bGlkIHRhcmdldCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHN3aXRjaCAo
YXR0YWNobWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKG1fd2ViZ2xEcmF3QnVmZmVycworICAgICAgICAg
ICAgJiYgYXR0YWNobWVudCA+IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAor
ICAgICAgICAgICAgJiYgYXR0YWNobWVudCA8IHN0YXRpY19jYXN0PEdDM0RlbnVtPihHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAgKyBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVu
dCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
ICAgIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCkBA
IC0xMTA1LDYgKzExMjgsMjcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UAogICAgIH0KIH0KIAorR0MzRGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heERy
YXdCdWZmZXJzKCkKK3sKKyAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKCFtX21heERyYXdCdWZmZXJzKQorICAgICAgICBtX2NvbnRleHQt
PmdldEludGVnZXJ2KEV4dGVuc2lvbnMzRDo6TUFYX0RSQVdfQlVGRkVSU19FWFQsICZtX21heERy
YXdCdWZmZXJzKTsKKyAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihFeHRlbnNpb25zM0Q6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19F
WFQsICZtX21heENvbG9yQXR0YWNobWVudHMpOworICAgIC8vIFdFQkdMX2RyYXdfYnVmZmVycyBy
ZXF1aXJlcyBNQVhfQ09MT1JfQVRUQUNITUVOVFMgPj0gTUFYX0RSQVdfQlVGRkVSUy4KKyAgICBy
ZXR1cm4gc3RkOjptaW4obV9tYXhEcmF3QnVmZmVycywgbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsK
K30KKworR0MzRGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVu
dHMoKQoreworICAgIGlmICghc3VwcG9ydHNEcmF3QnVmZmVycygpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoIW1fbWF4Q29sb3JBdHRhY2htZW50cykKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihFeHRlbnNpb25zM0Q6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21h
eENvbG9yQXR0YWNobWVudHMpOworICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7Cit9
CisgICAgCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29u
c2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbmVkJiBudW1FbGVtZW50c1JlcXVpcmVkKQog
ewogICAgIC8vIFBlcmZvcm1zIGNvbnNlcnZhdGl2ZSB2YWxpZGF0aW9uIGJ5IGNhY2hpbmcgYSBt
YXhpbXVtIGluZGV4IG9mCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTgxNDEzKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJHTEdldEluZm8gZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
YXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0
dGFjaG1lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gbW9kZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1h
Z2UyREJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQs
IEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKQEAgLTYxLDYgKzYyLDEw
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CisgICAgLy8gRmlyc3QgdGltZSBjYWxs
ZWQsIGlmIEVYVF9kcmF3X2J1ZmZlcnMgaXMgc3VwcG9ydGVkLCBxdWVyeSB0aGUgdmFsdWU7IG90
aGVyd2lzZSByZXR1cm4gMC4KKyAgICAvLyBMYXRlciwgcmV0dXJuIHRoZSBjYWNoZWQgdmFsdWUu
CisgICAgdmlydHVhbCBHQzNEaW50IGdldE1heERyYXdCdWZmZXJzKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBHQzNEaW50IGdldE1heENvbG9yQXR0YWNobWVudHMoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUs
IHVuc2lnbmVkJiBudW1FbGVtZW50c1JlcXVpcmVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgdmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51
bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IHVuc2lnbmVkJiBudW1FbGVtZW50cywgR0MzRHNpemVpIHByaW1pdGl2ZUNvdW50KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAkocmV2aXNpb24gMTgxNDEzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NDMsMjkgKzQ0NDMs
NiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50V2FyCiAgICAgY2FudmFz
KCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCkK
LXsKLSAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgewot
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
LCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRhcmdldCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIHN3aXRjaCAoYXR0YWNobWVudCkgewotICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0FUVEFDSE1FTlQ6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRB
Q0hNRU5UOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVDoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKG1fd2ViZ2xE
cmF3QnVmZmVycwotICAgICAgICAgICAgJiYgYXR0YWNobWVudCA+IEdyYXBoaWNzQ29udGV4dDNE
OjpDT0xPUl9BVFRBQ0hNRU5UMAotICAgICAgICAgICAgJiYgYXR0YWNobWVudCA8IHN0YXRpY19j
YXN0PEdDM0RlbnVtPihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAgKyBnZXRN
YXhDb2xvckF0dGFjaG1lbnRzKCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgYXR0YWNobWVudCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZh
bGlkYXRlQmxlbmRGdW5jRmFjdG9ycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVt
IHNyYywgR0MzRGVudW0gZHN0KQogewogICAgIGlmICgoKHNyYyA9PSBHcmFwaGljc0NvbnRleHQz
RDo6Q09OU1RBTlRfQ09MT1IgfHwgc3JjID09IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNf
Q09OU1RBTlRfQ09MT1IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShyZXZpc2lvbiAxODE0MTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5MSw3ICs1OTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hh
c1JlcXVlc3RlZFBvbGljeVJlc29sdXRpb247CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCk7CiAKLSAgICAvLyBFbmFibGVkIGV4dGVuc2lvbiBvYmplY3RzLgorICAgIC8vIEVuYWJs
ZWQgZXh0ZW5zaW9uIG9iamVjdHMuIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIFdlYkdMMVJlbmRlcmlu
Z0NvbnRleHQsIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRG
cmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRCbGVuZE1p
bk1heD4gbV9leHRCbGVuZE1pbk1heDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RVhUc1JHQj4gbV9l
eHRzUkdCOwpAQCAtNzY4LDcgKzc2OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBmcmFtZWJ1ZmZlciBmdW5j
dGlvbnMuCiAgICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYgcGFyYW1ldGVycyBhcmUgaWxsZWdh
bC4KLSAgICBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCk7Cisg
ICAgdmlydHVhbCBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCkg
PSAwOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGJsZW5kIGVxdWF0aW9u
IG1vZGUuCiAgICAgdmlydHVhbCBib29sIHZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtKSA9IDA7CkBAIC04NDksMTAgKzg0OSw4IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBDbGFtcCB0aGUgd2lkdGggYW5kIGhlaWdodCB0byBHTF9NQVhfVklFV1BP
UlRfRElNUy4KICAgICBJbnRTaXplIGNsYW1wZWRDYW52YXNTaXplKCk7CiAKLSAgICAvLyBGaXJz
dCB0aW1lIGNhbGxlZCwgaWYgRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQsIHF1ZXJ5IHRo
ZSB2YWx1ZTsgb3RoZXJ3aXNlIHJldHVybiAwLgotICAgIC8vIExhdGVyLCByZXR1cm4gdGhlIGNh
Y2hlZCB2YWx1ZS4KLSAgICBHQzNEaW50IGdldE1heERyYXdCdWZmZXJzKCk7Ci0gICAgR0MzRGlu
dCBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCk7CisgICAgdmlydHVhbCBHQzNEaW50IGdldE1heERy
YXdCdWZmZXJzKCkgPSAwOworICAgIHZpcnR1YWwgR0MzRGludCBnZXRNYXhDb2xvckF0dGFjaG1l
bnRzKCkgPSAwOwogCiAgICAgdm9pZCBzZXRCYWNrRHJhd0J1ZmZlcihHQzNEZW51bSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248611</attachid>
            <date>2015-03-13 15:23:01 -0700</date>
            <delta_ts>2015-03-16 11:53:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>20743</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTEzICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMMl0gTXVsdGlwbGUg
UmVuZGVyIFRhcmdldHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjY5OTQuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTgxNTc2Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgYSBt
b2RpZmllZCB2ZXJzaW9uIG9mIHRoZSAxLjAuMyBjb25mb3JtYW5jZSB0ZXN0OgorICAgICAgICBj
b25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy5odG1sCisgICAgICAgIFRo
aXMgdGVzdCB3aWxsIGJlIGxhbmRlZCBhbG9uZyB3aXRoIG90aGVyIG1vZGlmaWVkIGV4dGVuc2lv
biBjb25mb3JtYW5jZSB0ZXN0cworICAgICAgICBvbmNlIGFwcHJvdmFsIGZyb20gS2hyb25vcyBp
cyByZWNlaXZlZC4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1
ZmZlcnMpOiBNb3N0bHkgdGhlIHNhbWUgYXMgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNX
RUJHTC4KKyAgICAgICAgUmV0dXJucyBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZXMsIHVzZXMgbm9u
IEVYVCBlbnVtcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNs
ZWFyQnVmZmVyaXYpOiBUaGlzIGFjdHVhbGx5IGRvZXMgbm90aGluZyBmb3Igbm93IGJ1dCB0aGUg
dmFsaWRhdGlvbiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQnVmZmVydWl2KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZ2KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhckJ1ZmZlcmZpKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUZy
YW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMpOiBSZW1vdmVzIHRoZSBleHRlbnNpb24gb2JqZWN0IGNo
ZWNrLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0TWF4RHJh
d0J1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
TWF4Q29sb3JBdHRhY2htZW50cyk6IE11c3QgcmV0dXJuIHRoZSBzYW1lIHRoaW5nIGFzIGdldE1h
eERyYXdCdWZmZXJzLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKTogUmVtb3ZlIGV4dGVuc2lvbiBvYmplY3QgY2hlY2tzLgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVi
dWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyk6IENvcGllZCBmcm9t
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldE1heERyYXdCdWZmZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldE1heENvbG9yQXR0YWNobWVudHMpOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5j
UGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oOgorCiAyMDE1LTAzLTEzICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaXRlcyB0aGF0IHVzZSBhIGRldmljZS13aWR0
aCB2aWV3cG9ydCBidXQgZG9uJ3QgaGF2ZSBlbm91Z2ggaGVpZ2h0IHRvIGZpbGwgdGhlIHZpZXcg
YXJlIHNjYWxlZCB1cApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzYsMzYgKzQ3NiwxMjkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpkcmF3UmFuZ2VFbAogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRyYXdCdWZmZXJz
KFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVycyk7
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEdDM0RzaXpl
aSBuID0gYnVmZmVycy5zaXplKCk7CisgICAgY29uc3QgR0MzRGVudW0qIGJ1ZnMgPSBidWZmZXJz
LmRhdGEoKTsKKyAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CisgICAgICAgIGlmIChu
ICE9IDEpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnMiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnVmc1swXSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6QkFDSyAmJiBidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dDNEOjpO
T05FKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVycyIsICJCQUNLIG9yIE5PTkUiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVm
ZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8g
Y2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCisgICAgICAgIEdDM0RlbnVtIHZhbHVl
ID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkU7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwg
JnZhbHVlKTsKKyAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CisgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImRyYXdC
dWZmZXJzIiwgIm1vcmUgdGhhbiBtYXggZHJhdyBidWZmZXJzIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChHQzNEc2l6ZWkgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChidWZzW2ldICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FICYm
IGJ1ZnNbaV0gIT0gc3RhdGljX2Nhc3Q8R0MzRGVudW0+KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCArIGkpKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnMiLCAiQ09M
T1JfQVRUQUNITUVOVGkgb3IgTk9ORSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1
ZmZlcnMoYnVmZmVycyk7CisgICAgfQogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyQnVmZmVyaXYoR0MzRGVudW0gYnVmZmVyLCBHQzNEaW50IGRyYXdidWZmZXIsIEludDMy
QXJyYXkqIHZhbHVlKQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9Q
QVJBTShkcmF3YnVmZmVyKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHN3aXRjaCAo
YnVmZmVyKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1I6CisgICAgICAgIGlm
IChkcmF3YnVmZmVyIDwgMCB8fCBkcmF3YnVmZmVyID49IGdldE1heERyYXdCdWZmZXJzKCkpIHsK
KyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFLCAiY2xlYXJCdWZmZXJpdiIsICJidWZmZXIgaW5kZXggb3V0IG9mIHJhbmdlIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBjbGVh
ckJ1ZmZlcml2LCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTDoKKyAgICAgICAgaWYgKGRyYXdidWZm
ZXIpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCAiY2xlYXJCdWZmZXJpdiIsICJidWZmZXIgaW5kZXggbXVzdCBiZSAwIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBj
bGVhckJ1ZmZlcml2LCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEg6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZl
cml2IiwgImJ1ZmZlciBhcmd1bWVudCBtdXN0IGJlIENPTE9SIG9yIFNURU5DSUwiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFy
QnVmZmVydWl2KEdDM0RlbnVtIGJ1ZmZlciwgR0MzRGludCBkcmF3YnVmZmVyLCBVaW50MzJBcnJh
eSogdmFsdWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgc3dpdGNoIChidWZm
ZXIpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUjoKKyAgICAgICAgaWYgKGRy
YXdidWZmZXIgPCAwIHx8IGRyYXdidWZmZXIgPj0gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgeworICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJjbGVhckJ1ZmZlcnVpdiIsICJidWZmZXIgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogQ2FsbCBjbGVhckJ1
ZmZlcnVpdiwgcmVxdWlyZXMgZ2wzLmggYW5kIEVTMy9nbC5oCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUw6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoK
KyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcnVpdiIsICJidWZmZXIgYXJndW1lbnQg
bXVzdCBiZSBDT0xPUiIpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmdihHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQg
ZHJhd2J1ZmZlciwgRmxvYXQzMkFycmF5KiB2YWx1ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVm
ZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oZHJhd2J1ZmZlcik7CiAgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyAgICBzd2l0Y2ggKGJ1ZmZlcikgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SOgorICAgICAgICBpZiAoZHJhd2J1ZmZlciA8IDAgfHwgZHJhd2J1ZmZlciA+PSBnZXRN
YXhEcmF3QnVmZmVycygpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNsZWFyQnVmZmVyZnYiLCAiYnVmZmVyIGluZGV4
IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IC8vIFRPRE86IENhbGwgY2xlYXJCdWZmZXJmdiwgcmVxdWlyZXMgZ2wzLmggYW5kIEVTMy9nbC5o
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIOgorICAg
ICAgICBpZiAoZHJhd2J1ZmZlcikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjbGVhckJ1ZmZlcmZ2IiwgImJ1ZmZlciBp
bmRleCBtdXN0IGJlIDAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAvLyBUT0RPOiBDYWxsIGNsZWFyQnVmZmVyZnYsIHJlcXVpcmVzIGdsMy5oIGFuZCBFUzMvZ2wu
aAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCAiY2xlYXJCdWZmZXJmdiIsICJidWZmZXIgYXJndW1lbnQgbXVzdCBiZSBDT0xPUiBP
UiBERVBUSCIpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Y2xlYXJCdWZmZXJmaShHQzNEZW51bSBidWZmZXIsIEdDM0RpbnQgZHJhd2J1
ZmZlciwgR0MzRGZsb2F0IGRlcHRoLCBHQzNEaW50IHN0ZW5jaWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGRyYXdidWZmZXIpOwogICAgIFVOVVNFRF9Q
QVJBTShkZXB0aCk7CiAgICAgVU5VU0VEX1BBUkFNKHN0ZW5jaWwpOworICAgIHN3aXRjaCAoYnVm
ZmVyKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICAg
ICAgaWYgKGRyYXdidWZmZXIpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY2xlYXJCdWZmZXJmdiIsICJidWZmZXIgaW5k
ZXggbXVzdCBiZSAwIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Ly8gVE9ETzogQ2FsbCBjbGVhckJ1ZmZlcmZpLCByZXF1aXJlcyBnbDMuaCBhbmQgRVMzL2dsLmgK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1I6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTDoKKyAgICBkZWZhdWx0OgorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJjbGVhckJ1ZmZlcmZ2IiwgImJ1ZmZl
ciBhcmd1bWVudCBtdXN0IGJlIERFUFRIX1NURU5DSUwiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogfQogCiBQYXNzUmVmUHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZVF1ZXJ5KCkKQEAgLTk3OCw2ICsxMDcxLDQzIEBAIFdlYkdMR2V0SW5mbyBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXQKICAgICB9CiB9CiAKK2Jvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50KQoreworICAgIGlmICh0
YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgdGFyZ2V0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
c3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDA6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoYXR0YWNobWVudCA+IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAorICAgICAgICAgICAgJiYgYXR0YWNobWVudCA8
IHN0YXRpY19jYXN0PEdDM0RlbnVtPihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAgKyBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgYXR0YWNobWVudCIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitHQzNEaW50IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldE1heERyYXdCdWZmZXJzKCkKK3sKKyAgICBpZiAoIW1fbWF4RHJhd0J1ZmZlcnMp
CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9E
UkFXX0JVRkZFUlMsICZtX21heERyYXdCdWZmZXJzKTsKKyAgICByZXR1cm4gbV9tYXhEcmF3QnVm
ZmVyczsKK30KKworR0MzRGludCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0
dGFjaG1lbnRzKCkKK3sKKyAgICAvLyBEcmF3QnVmZmVycyByZXF1aXJlcyBNQVhfQ09MT1JfQVRU
QUNITUVOVFMgPT0gTUFYX0RSQVdfQlVGRkVSUworICAgIGlmICghbV9tYXhDb2xvckF0dGFjaG1l
bnRzKQorICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpN
QVhfRFJBV19CVUZGRVJTLCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICByZXR1cm4gbV9t
YXhDb2xvckF0dGFjaG1lbnRzOworfQorCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCkBAIC0yMTU2LDggKzIyODYsNiBAQCBXZWJHTEdldEluZm8gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1l
dGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTklGT1JNX0JVRkZFUl9P
RkZTRVRfQUxJR05NRU5UOgogICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT1BZX1JFQURfQlVGRkVSOgotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkNPUFlfV1JJVEVfQlVGRkVSOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkRSQVdfQlVGRkVSMDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEUkFX
X0JVRkZFUjE6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RFJBV19CVUZGRVIyOgpAQCAt
MjE3Myw3ICsyMzAxLDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXQKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEUkFXX0JVRkZFUjEyOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRSQVdfQlVGRkVSMTM6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6RFJBV19CVUZGRVIxNDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEUkFXX0JV
RkZFUjE1OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRSQVdfQlVGRkVSMTU6IHsKKyAg
ICAgICAgR0MzRGludCB2YWx1ZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FOworICAgICAgICBp
ZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAgICB2YWx1ZSA9IG1fZnJhbWVidWZm
ZXJCaW5kaW5nLT5nZXREcmF3QnVmZmVyKHBuYW1lKTsKKyAgICAgICAgZWxzZSAvLyBlbXVsYXRl
ZCBiYWNrYnVmZmVyCisgICAgICAgICAgICB2YWx1ZSA9IG1fYmFja0RyYXdCdWZmZXI7CisgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWUpOworICAgICAgICB9CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6Q09QWV9SRUFEX0JVRkZFUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT1BZX1dSSVRFX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQSVhF
TF9QQUNLX0JVRkZFUl9CSU5ESU5HOiAgIAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBJ
WEVMX1VOUEFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
RUFEX0JVRkZFUjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTg5LDYgKzE4OSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCBHQzNEaW50IGdldE1heERyYXdCdWZmZXJzKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBH
QzNEaW50IGdldE1heENvbG9yQXR0YWNobWVudHMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbmVk
JiBudW1FbGVtZW50c1JlcXVpcmVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgdmFsaWRh
dGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBtb2RlLCBH
QzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIHVuc2lnbmVk
JiBudW1FbGVtZW50cywgR0MzRHNpemVpIHByaW1pdGl2ZUNvdW50KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGVudW0gbW9kZSkgb3ZlcnJpZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywKICAgICAgICAgTnVsbERpc3Bvc2l0
aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVDYXBhYmlsaXR5KGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gY2FwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgdmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsK
ICAgICAKIHByaXZhdGU6CiAgICAgR0MzRGVudW0gYmFzZUludGVybmFsRm9ybWF0RnJvbUludGVy
bmFsRm9ybWF0KEdDM0RlbnVtIGludGVybmFsZm9ybWF0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiAxODE0MTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJh
d0J1ZmZlcnMoY29uc3QKIAogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVj
ZXNzYXJ5KGJvb2wgZm9yY2UpCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPm1fd2ViZ2xEcmF3QnVm
ZmVycykKKyAgICBpZiAoIWNvbnRleHQoKS0+bV93ZWJnbERyYXdCdWZmZXJzICYmICFjb250ZXh0
KCktPmlzV2ViR0wyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHJlc2V0ID0gZm9yY2U7
CiAgICAgLy8gVGhpcyBmaWx0ZXJpbmcgd29ya3MgYXJvdW5kIGdyYXBoaWNzIGRyaXZlciBidWdz
IG9uIE1hYyBPUyBYLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxODE0MTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTEsNiArMzUxLDI5IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEYKICAgICB9CiB9CiAKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQpCit7CisgICAgaWYgKHRhcmdldCAhPSBH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCB0YXJnZXQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBzd2l0Y2ggKGF0
dGFjaG1lbnQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChtX3dlYmdsRHJhd0J1ZmZlcnMKKyAgICAgICAgICAg
ICYmIGF0dGFjaG1lbnQgPiBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgPCBzdGF0aWNfY2FzdDxHQzNEZW51bT4oR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwICsgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGF0dGFjaG1lbnQi
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAg
ICAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQpAQCAt
MTEwNSw2ICsxMTI4LDI3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFAKICAgICB9CiB9CiAKK0dDM0RpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhEcmF3
QnVmZmVycygpCit7CisgICAgaWYgKCFzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmICghbV9tYXhEcmF3QnVmZmVycykKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRJbnRlZ2VydihFeHRlbnNpb25zM0Q6Ok1BWF9EUkFXX0JVRkZFUlNfRVhULCAmbV9tYXhEcmF3
QnVmZmVycyk7CisgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCisgICAgICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uczNEOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
LCAmbV9tYXhDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAvLyBXRUJHTF9kcmF3X2J1ZmZlcnMgcmVx
dWlyZXMgTUFYX0NPTE9SX0FUVEFDSE1FTlRTID49IE1BWF9EUkFXX0JVRkZFUlMuCisgICAgcmV0
dXJuIHN0ZDo6bWluKG1fbWF4RHJhd0J1ZmZlcnMsIG1fbWF4Q29sb3JBdHRhY2htZW50cyk7Cit9
CisKK0dDM0RpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRz
KCkKK3sKKyAgICBpZiAoIXN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCFtX21heENvbG9yQXR0YWNobWVudHMpCisgICAgICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYoRXh0ZW5zaW9uczNEOjpNQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhULCAmbV9tYXhD
b2xvckF0dGFjaG1lbnRzKTsKKyAgICByZXR1cm4gbV9tYXhDb2xvckF0dGFjaG1lbnRzOworfQor
ICAgIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNl
cnZhdGl2ZShHQzNEZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkKIHsK
ICAgICAvLyBQZXJmb3JtcyBjb25zZXJ2YXRpdmUgdmFsaWRhdGlvbiBieSBjYWNoaW5nIGEgbWF4
aW11bSBpbmRleCBvZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0
dGFjaG1lbnQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRh
Y2htZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaGludChHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIG1vZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2Uy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEaW50IGJvcmRlcikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdl
MkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CkBAIC02MSw2ICs2MiwxMCBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgorICAgIC8vIEZpcnN0IHRpbWUgY2FsbGVk
LCBpZiBFWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZCwgcXVlcnkgdGhlIHZhbHVlOyBvdGhl
cndpc2UgcmV0dXJuIDAuCisgICAgLy8gTGF0ZXIsIHJldHVybiB0aGUgY2FjaGVkIHZhbHVlLgor
ICAgIHZpcnR1YWwgR0MzRGludCBnZXRNYXhEcmF3QnVmZmVycygpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgR0MzRGludCBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQzNEZW51bSB0eXBlLCB1
bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0g
bW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCB1
bnNpZ25lZCYgbnVtRWxlbWVudHMsIEdDM0RzaXplaSBwcmltaXRpdmVDb3VudCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJ
KHJldmlzaW9uIDE4MTQxMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDQzLDI5ICs0NDQzLDYg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFdhcgogICAgIGNhbnZhcygp
LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQpCi17
Ci0gICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpIHsKLSAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwg
ZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0YXJnZXQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9BVFRBQ0hNRU5UOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1F
TlQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlmIChtX3dlYmdsRHJh
d0J1ZmZlcnMKLSAgICAgICAgICAgICYmIGF0dGFjaG1lbnQgPiBHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQVRUQUNITUVOVDAKLSAgICAgICAgICAgICYmIGF0dGFjaG1lbnQgPCBzdGF0aWNfY2Fz
dDxHQzNEZW51bT4oR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwICsgZ2V0TWF4
Q29sb3JBdHRhY2htZW50cygpKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUs
ICJpbnZhbGlkIGF0dGFjaG1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZUJsZW5kRnVuY0ZhY3RvcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBz
cmMsIEdDM0RlbnVtIGRzdCkKIHsKICAgICBpZiAoKChzcmMgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTlNUQU5UX0NPTE9SIHx8IHNyYyA9PSBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX0NP
TlNUQU5UX0NPTE9SKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAkocmV2aXNpb24gMTgxNDEzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTEsNyArNTkxLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNS
ZXF1ZXN0ZWRQb2xpY3lSZXNvbHV0aW9uOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpOwogCi0gICAgLy8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KKyAgICAvLyBFbmFibGVk
IGV4dGVuc2lvbiBvYmplY3RzLiBGSVhNRTogTW92ZSB0aGVzZSB0byBXZWJHTDFSZW5kZXJpbmdD
b250ZXh0LCBub3QgbmVlZGVkIGZvciBXZWJHTDIKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RVhURnJh
Z0RlcHRoPiBtX2V4dEZyYWdEZXB0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RVhUQmxlbmRNaW5N
YXg+IG1fZXh0QmxlbmRNaW5NYXg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVYVHNSR0I+IG1fZXh0
c1JHQjsKQEAgLTc2OCw3ICs3NjgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgZnJhbWVidWZmZXIgZnVuY3Rp
b25zLgogICAgIC8vIEdlbmVyYXRlIEdMIGVycm9yIGlmIHBhcmFtZXRlcnMgYXJlIGlsbGVnYWwu
Ci0gICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQpOworICAg
IHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQpID0g
MDsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBibGVuZCBlcXVhdGlvbiBt
b2RlLgogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQzNEZW51bSkgPSAwOwpAQCAtODQ5LDEwICs4NDksOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gQ2xhbXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgdG8gR0xfTUFYX1ZJRVdQT1JU
X0RJTVMuCiAgICAgSW50U2l6ZSBjbGFtcGVkQ2FudmFzU2l6ZSgpOwogCi0gICAgLy8gRmlyc3Qg
dGltZSBjYWxsZWQsIGlmIEVYVF9kcmF3X2J1ZmZlcnMgaXMgc3VwcG9ydGVkLCBxdWVyeSB0aGUg
dmFsdWU7IG90aGVyd2lzZSByZXR1cm4gMC4KLSAgICAvLyBMYXRlciwgcmV0dXJuIHRoZSBjYWNo
ZWQgdmFsdWUuCi0gICAgR0MzRGludCBnZXRNYXhEcmF3QnVmZmVycygpOwotICAgIEdDM0RpbnQg
Z2V0TWF4Q29sb3JBdHRhY2htZW50cygpOworICAgIHZpcnR1YWwgR0MzRGludCBnZXRNYXhEcmF3
QnVmZmVycygpID0gMDsKKyAgICB2aXJ0dWFsIEdDM0RpbnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50
cygpID0gMDsKIAogICAgIHZvaWQgc2V0QmFja0RyYXdCdWZmZXIoR0MzRGVudW0pOwogCg==
</data>
<flag name="review"
          id="273494"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>