<?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>162898</bug_id>
          
          <creation_ts>2016-10-04 04:06:51 -0700</creation_ts>
          <short_desc>[GStreamer][MSE] SourceBufferPrivateGStreamer refactoring</short_desc>
          <delta_ts>2016-10-26 01:43:35 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236130</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 04:06:51 -0700</bug_when>
    <thetext>Move SourceBufferPrivateGStreamer to an mse directory and add unimplemented features (abort, enqueueing, sample flow control).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236132</commentid>
    <comment_count>1</comment_count>
      <attachid>290590</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 04:13:00 -0700</bug_when>
    <thetext>Created attachment 290590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236161</commentid>
    <comment_count>2</comment_count>
      <attachid>290590</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 07:07:25 -0700</bug_when>
    <thetext>Comment on attachment 290590
Patch

Wait until all the patches in 157314 are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237953</commentid>
    <comment_count>3</comment_count>
      <attachid>290590</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 04:44:33 -0700</bug_when>
    <thetext>Comment on attachment 290590
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:89
&gt; +    MediaSourceGStreamer* m_mediaSource;
&gt; +    ContentType m_type;
&gt; +    RefPtr&lt;MediaSourceClientGStreamerMSE&gt; m_client;
&gt; +    SourceBufferPrivateClient* m_sourceBufferPrivateClient;

Let&apos;s add a comment here and create bug later to study making these plain pointers RefPtr or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237957</commentid>
    <comment_count>4</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 05:15:09 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Let&apos;s add a comment here and create bug later to study making these plain
&gt; pointers RefPtr or similar.

After talking to Quique (Enrique) in person, we saw that there are cross references in place and we don&apos;t want to mess this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240762</commentid>
    <comment_count>5</comment_count>
      <attachid>291761</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-16 12:05:21 -0700</bug_when>
    <thetext>Created attachment 291761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242784</commentid>
    <comment_count>6</comment_count>
      <attachid>291761</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-21 00:06:06 -0700</bug_when>
    <thetext>Comment on attachment 291761
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:60
&gt; +    , m_client(client)

It seems to be assumed that m_client is non-null throughout the lifetime of SourceBufferPrivateGStreamer, at least how it&apos;s used in append() and because it&apos;s not nulled out anywhere.

If that&apos;s the case, the parameter to this constructor and the member variables should be Ref&lt;&gt;, and there&apos;s no need to null-check it anywhere.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:62
&gt; +    , m_isReadyForMoreSamples(true)
&gt; +    , m_notifyWhenReadyForMoreSamples(false)

These can be initialized in the constructor.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:68
&gt; +SourceBufferPrivateGStreamer::~SourceBufferPrivateGStreamer()
&gt; +{
&gt; +}

Default it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243095</commentid>
    <comment_count>7</comment_count>
      <attachid>292407</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-21 14:25:32 -0700</bug_when>
    <thetext>Created attachment 292407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244289</commentid>
    <comment_count>8</comment_count>
      <attachid>292780</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-25 11:03:52 -0700</bug_when>
    <thetext>Created attachment 292780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244674</commentid>
    <comment_count>9</comment_count>
      <attachid>292892</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:20:08 -0700</bug_when>
    <thetext>Created attachment 292892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244706</commentid>
    <comment_count>10</comment_count>
      <attachid>292892</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:43:27 -0700</bug_when>
    <thetext>Comment on attachment 292892
Patch

Clearing flags on attachment: 292892

Committed r207879: &lt;http://trac.webkit.org/changeset/207879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244707</commentid>
    <comment_count>11</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:43:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290590</attachid>
            <date>2016-10-04 04:13:00 -0700</date>
            <delta_ts>2016-10-16 12:05:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162898-20161004110949.patch</filename>
            <type>text/plain</type>
            <size>22130</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMzYWU2YmNmNjJiNGNj
MzFjNDdlZGE2ZWRkNjM1NTVkNWRlYzU5MC4uYTk3ZWRkMDA2NWY4MTAwYjY0ZmJhMjJhNjhlZWZj
ZTA1NmZjZWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHRvIGFuIG1zZSBkaXJlY3RvcnkgYW5kIGFkZGVkIHVu
aW1wbGVtZW50ZWQgZmVhdHVyZXMgKGFib3J0LCBlbnF1ZXVlaW5nIGFuZCBzYW1wbGUgZmxvdyBj
b250cm9sKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldENsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6YWJvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVzZXRQ
YXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVldWVOb25EaXNw
bGF5aW5nU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeUZvck1vcmVTYW1wbGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVJl
YWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcjo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRXaGVuUmVhZHlG
b3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1wbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkUmVjZWl2ZUFs
bFBlbmRpbmdTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyLmguCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2Fu
aGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtNU0VdIE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI4OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRkN2ZkMjQ2NjVl
MDVkYWM0MjQzNzZlY2U0NzRlMjM0YjY5Y2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5o
IgotCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKLQotI2luY2x1
ZGUgIkNvbnRlbnRUeXBlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVy
JiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVudCwgY29udGVu
dFR5cGUpKTsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciYgY2xpZW50LCBjb25z
dCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCi0g
ICAgLCBtX2NsaWVudCgmY2xpZW50KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpI
YXZlTm90aGluZykKLXsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6flNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKQotewotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQp
Ci17Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50ID0gY2xpZW50OwotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBB
U1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKLQotICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2NsaWVudC0+YXBwZW5kKHRoaXMs
IGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0KTsKLX0KLQotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZXNldFBhcnNlclN0
YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQotewotICAgIG1fY2xpZW50
LT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKHRoaXMpOwotfQotCi1NZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCi17
Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFRPRE86IEltcGxlbWVudCB0aGVz
ZQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVldWVOb25E
aXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0b21pY1N0cmlu
ZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4sIEF0b21p
Y1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnN0
b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGll
bnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgyZjg2Yzc2
ZWMwZWU5Mzc2MzJhODA2NWY0MzNiODY0YzRkYmZjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQotICogQ29weXJp
Z2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyX2gKLSNkZWZpbmUgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NU
UkVBTUVSKQotCi0jaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJTb3VyY2VCdWZm
ZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
IGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyJiwgY29uc3QgQ29udGVudFR5cGUmKTsKLSAgICB2aXJ0dWFsIH5Tb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7Ci0KLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hBbmRFbnF1ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJlZlB0cjxNZWRp
YVNhbXBsZT4+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlU2FtcGxl
KFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgYm9v
bCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXNraW5nRm9yTW9yZVNhbXBs
ZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5
Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyJiwgY29uc3QgQ29u
dGVudFR5cGUmKTsKLQotICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQdHI8TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKLSAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NjdmM2VlZTYzN2VkMzM1ZDA3NTRiOTcwMDBjNDgyMGU2MzZhZjY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFz
dGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0Uo
R1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
aCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI+IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShNZWRpYVNvdXJj
ZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3Ry
ZWFtZXJNU0U+IGNsaWVudCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIobWVkaWFT
b3VyY2UsIGNsaWVudCwgY29udGVudFR5cGUpKTsKK30KKworU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcjo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUdTdHJlYW1l
ciogbWVkaWFTb3VyY2UsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+
IGNsaWVudCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQorICAgIDogU291cmNlQnVm
ZmVyUHJpdmF0ZSgpCisgICAgLCBtX21lZGlhU291cmNlKG1lZGlhU291cmNlKQorICAgICwgbV90
eXBlKGNvbnRlbnRUeXBlKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9pc1JlYWR5
Rm9yTW9yZVNhbXBsZXModHJ1ZSkKKyAgICAsIG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBs
ZXMoZmFsc2UpCit7Cit9CisKK1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KQor
eworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChtX21lZGlhU291cmNlKTsKKwor
ICAgIGlmICghbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBkYXRhLCBsZW5ndGgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpSZWFk
U3RyZWFtRmFpbGVkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjph
Ym9ydCgpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YWJvcnQodGhp
cyk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVzZXRQYXJzZXJT
dGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKK3sKKyAgICBpZiAobV9t
ZWRpYVNvdXJjZSkKKyAgICAgICAgbV9tZWRpYVNvdXJjZS0+cmVtb3ZlU291cmNlQnVmZmVyKHRo
aXMpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UodGhpcyk7Cit9CisKK01lZGlhUGxheWVyOjpSZWFkeVN0YXRlIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21l
ZGlhU291cmNlLT5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKK3sK
KyAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKHN0YXRlKTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVldWVOb25EaXNwbGF5aW5nU2Ft
cGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4gc2FtcGxlcywgQXRvbWljU3RyaW5nKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmZsdXNoQW5kRW5xdWV1ZU5v
bkRpc3BsYXlpbmdTYW1wbGVzKHNhbXBsZXMpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4gcHJwU2Ft
cGxlLCBBdG9taWNTdHJpbmcpCit7CisgICAgbV9ub3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxl
cyA9IGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwcm90ZWN0ZWRQcnBTYW1wbGUg
PSBwcnBTYW1wbGU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZW5xdWV1
ZVNhbXBsZShwcm90ZWN0ZWRQcnBTYW1wbGUpOworfQorCitib29sIFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCit7CisgICAg
cmV0dXJuIG1faXNSZWFkeUZvck1vcmVTYW1wbGVzOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5Rm9yTW9yZVNhbXBsZXMoYm9vbCBpc1JlYWR5KQorewor
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzUmVhZHlGb3JNb3JlU2Ft
cGxlcyA9IGlzUmVhZHk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UmVhZHlGb3JNb3JlU2FtcGxlcygpCit7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIHNldFJlYWR5Rm9yTW9yZVNhbXBsZXModHJ1ZSk7CisgICAgaWYgKG1fbm90
aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMo
dGhpcywgbV90cmFja0lkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
OjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKK3sKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkKKyAg
ICAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0
YXRlKHRoaXMsIGlzQWN0aXZlKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyOjpzdG9wQXNraW5nRm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nIHRyYWNrSWQpCit7
CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIG1fbm90aWZ5V2hlblJlYWR5
Rm9yTW9yZVNhbXBsZXMgPSB0cnVlOworICAgIG1fdHJhY2tJZCA9IHRyYWNrSWQ7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiBpbml0aWFsaXphdGlvblNlZ21lbnQpCit7
CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudCh0aGlzLCBpbml0aWFsaXphdGlvblNlZ21lbnQpOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1wbGUoUGFzc1JlZlB0cjxN
ZWRpYVNhbXBsZT4gcHJwU2FtcGxlKQoreworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcHJvdGVj
dGVkUHJwU2FtcGxlID0gcHJwU2FtcGxlOworICAgIGlmIChtX3NvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUodGhpcywgKnByb3RlY3RlZFBycFNhbXBsZSk7Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkUmVjZWl2ZUFsbFBlbmRpbmdT
YW1wbGVzKCkKK3sKKyAgICBpZiAobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAgICAg
ICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZSh0aGlzLCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQp
OworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDA0YzhmY2ViYzlmNGNkZmUz
NjY5MmYyMjg1ZjNjNGJiYzAwNTA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3Vw
IEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcl9oCisjZGVmaW5lIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKKwor
I2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgorI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRNZWRpYVNvdXJj
ZUdTdHJlYW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNl
R1N0cmVhbWVyOworCitjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgeworCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFTb3VyY2VHU3RyZWFtZXIq
LCBQYXNzUmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgY29uc3QgQ29udGVu
dFR5cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7CisK
KyAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9
CisKKyAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFib3J0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldFBhcnNlclN0
YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgb3ZlcnJp
ZGU7CisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGZsdXNoQW5kRW5xdWV1ZU5vbkRpc3BsYXlpbmdTYW1wbGVzKFZl
Y3RvcjxSZWZQdHI8TWVkaWFTYW1wbGU+PiwgQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZykg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0
b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQg
bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc2V0UmVhZHlGb3JNb3JlU2FtcGxlcyhib29sKTsKKyAgICB2b2lkIG5v
dGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMoKTsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50Jik7CisgICAgdm9pZCBkaWRSZWNl
aXZlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVB
bGxQZW5kaW5nU2FtcGxlcygpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUdTdHJlYW1lciosIFBhc3NSZWZQdHI8TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+LCBjb25zdCBDb250ZW50VHlwZSYpOworICAgIGZyaWVu
ZCBjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTsKKworICAgIE1lZGlhU291cmNl
R1N0cmVhbWVyKiBtX21lZGlhU291cmNlOworICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKKyAgICBS
ZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1fY2xpZW50OworICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKKyAgICBi
b29sIG1faXNSZWFkeUZvck1vcmVTYW1wbGVzOworICAgIGJvb2wgbV9ub3RpZnlXaGVuUmVhZHlG
b3JNb3JlU2FtcGxlczsKKyAgICBBdG9taWNTdHJpbmcgbV90cmFja0lkOworfTsKKworfQorCisj
ZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291761</attachid>
            <date>2016-10-16 12:05:21 -0700</date>
            <delta_ts>2016-10-21 14:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162898-20161016190149.patch</filename>
            <type>text/plain</type>
            <size>22065</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYyZDk5MTExZDc0ZDY1
YWI4MTFiMDNjMmVhZTlmZWFmOTE0N2QxNC4uOTBkMjFiOWJmZWVhNDM4MTQyNmNiNmFlYmI2NTNi
ZjJkMDBkNDBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBN
b3ZlZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHRvIGFuIG1zZSBkaXJlY3RvcnkgYW5k
IGFkZGVkIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMgKGFib3J0LCBlbnF1ZXVlaW5nIGFuZCBzYW1w
bGUgZmxvdyBjb250cm9sKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVl
dWVOb25EaXNwbGF5aW5nU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeUZvck1vcmVT
YW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlk
UmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmguCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxl
eiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtNU0VdIE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI4OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRk
N2ZkMjQ2NjVlMDVkYWM0MjQzNzZlY2U0NzRlMjM0YjY5Y2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1
bGFyLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikK
LQotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyJiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVu
dCwgY29udGVudFR5cGUpKTsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciYgY2xp
ZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVu
dFR5cGUpCi0gICAgLCBtX2NsaWVudCgmY2xpZW50KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZykKLXsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6flNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKQotewotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50ID0gY2xpZW50Owot
fQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKLQotICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2NsaWVudC0+YXBw
ZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0KTsKLX0KLQot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZXNl
dFBhcnNlclN0YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQotewotICAg
IG1fY2xpZW50LT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKHRoaXMpOwotfQotCi1NZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
c3RhdGUpCi17Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFRPRE86IEltcGxl
bWVudCB0aGVzZQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVu
cXVldWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0
b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBs
ZT4sIEF0b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNT
dHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjgyZjg2Yzc2ZWMwZWU5Mzc2MzJhODA2NWY0MzNiODY0YzRkYmZjMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQot
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyX2gKLSNkZWZpbmUgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoR1NUUkVBTUVSKQotCi0jaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyJiwgY29uc3QgQ29udGVudFR5cGUmKTsKLSAgICB2aXJ0dWFs
IH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7Ci0KLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hBbmRFbnF1ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJl
ZlB0cjxNZWRpYVNhbXBsZT4+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBlbnF1
ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNTdHJpbmcpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXNraW5nRm9y
TW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50
V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyJiwg
Y29uc3QgQ29udGVudFR5cGUmKTsKLQotICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQ
dHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKLSAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NjdmM2VlZTYzN2VkMzM1ZDA3NTRiOTcwMDBjNDgyMGU2MzZhZjY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShN
ZWRpYVNvdXJjZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXJNU0U+IGNsaWVudCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBl
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIobWVkaWFTb3VyY2UsIGNsaWVudCwgY29udGVudFR5cGUpKTsKK30KKworU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJj
ZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3Ry
ZWFtZXJNU0U+IGNsaWVudCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQorICAgIDog
U291cmNlQnVmZmVyUHJpdmF0ZSgpCisgICAgLCBtX21lZGlhU291cmNlKG1lZGlhU291cmNlKQor
ICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwg
bV9pc1JlYWR5Rm9yTW9yZVNhbXBsZXModHJ1ZSkKKyAgICAsIG1fbm90aWZ5V2hlblJlYWR5Rm9y
TW9yZVNhbXBsZXMoZmFsc2UpCit7Cit9CisKK1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCog
Y2xpZW50KQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCA9IGNsaWVudDsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBlbmQoY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChtX21lZGlhU291
cmNlKTsKKworICAgIGlmICghbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBkYXRhLCBsZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpSZWFkU3RyZWFtRmFpbGVkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjphYm9ydCgpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
YWJvcnQodGhpcyk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVz
ZXRQYXJzZXJTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKCkKK3sKKyAg
ICBpZiAobV9tZWRpYVNvdXJjZSkKKyAgICAgICAgbV9tZWRpYVNvdXJjZS0+cmVtb3ZlU291cmNl
QnVmZmVyKHRoaXMpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UodGhpcyk7Cit9CisKK01lZGlhUGxheWVyOjpSZWFkeVN0YXRlIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX21lZGlhU291cmNlLT5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKK3sKKyAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRlKHN0YXRlKTsKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVldWVOb25EaXNw
bGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4gc2FtcGxlcywgQXRvbWlj
U3RyaW5nKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmZsdXNoQW5k
RW5xdWV1ZU5vbkRpc3BsYXlpbmdTYW1wbGVzKHNhbXBsZXMpOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBs
ZT4gcHJwU2FtcGxlLCBBdG9taWNTdHJpbmcpCit7CisgICAgbV9ub3RpZnlXaGVuUmVhZHlGb3JN
b3JlU2FtcGxlcyA9IGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwcm90ZWN0ZWRQ
cnBTYW1wbGUgPSBwcnBTYW1wbGU7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dC0+ZW5xdWV1ZVNhbXBsZShwcm90ZWN0ZWRQcnBTYW1wbGUpOworfQorCitib29sIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcp
Cit7CisgICAgcmV0dXJuIG1faXNSZWFkeUZvck1vcmVTYW1wbGVzOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5Rm9yTW9yZVNhbXBsZXMoYm9vbCBpc1Jl
YWR5KQoreworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzUmVhZHlG
b3JNb3JlU2FtcGxlcyA9IGlzUmVhZHk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5UmVhZHlGb3JNb3JlU2FtcGxlcygpCit7CisgICAgQVNTRVJUKFdURjo6
aXNNYWluVGhyZWFkKCkpOworICAgIHNldFJlYWR5Rm9yTW9yZVNhbXBsZXModHJ1ZSk7CisgICAg
aWYgKG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMpCisgICAgICAgIG1fc291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXModGhpcywgbV90cmFja0lkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKK3sKKyAgICBpZiAobV9tZWRpYVNv
dXJjZSkKKyAgICAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5n
ZUFjdGl2ZVN0YXRlKHRoaXMsIGlzQWN0aXZlKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpzdG9wQXNraW5nRm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nIHRy
YWNrSWQpCit7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIG1fbm90aWZ5
V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMgPSB0cnVlOworICAgIG1fdHJhY2tJZCA9IHRyYWNrSWQ7
Cit9CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiBpbml0aWFsaXphdGlvblNl
Z21lbnQpCit7CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAgICAg
bV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudCh0aGlzLCBpbml0aWFsaXphdGlvblNlZ21lbnQpOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1wbGUoUGFz
c1JlZlB0cjxNZWRpYVNhbXBsZT4gcHJwU2FtcGxlKQoreworICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gcHJvdGVjdGVkUHJwU2FtcGxlID0gcHJwU2FtcGxlOworICAgIGlmIChtX3NvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUodGhpcywgKnByb3RlY3RlZFBycFNhbXBs
ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkUmVjZWl2ZUFs
bFBlbmRpbmdTYW1wbGVzKCkKK3sKKyAgICBpZiAobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KQorICAgICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRT
dWNjZWVkZWQpOworfQorI2VuZGlmCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2MyYmMyNzc4
MjU3MTA0NmZhNzVjMjhkODI0NTY5ZjJhYmI2MzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlh
bkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dp
Y2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKKwor
I2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgorI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRNZWRpYVNvdXJj
ZUdTdHJlYW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNl
R1N0cmVhbWVyOworCitjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgeworCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFTb3VyY2VHU3RyZWFtZXIq
LCBQYXNzUmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgY29uc3QgQ29udGVu
dFR5cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7CisK
KyAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9
CisKKyAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFib3J0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldFBhcnNlclN0
YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgb3ZlcnJp
ZGU7CisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGZsdXNoQW5kRW5xdWV1ZU5vbkRpc3BsYXlpbmdTYW1wbGVzKFZl
Y3RvcjxSZWZQdHI8TWVkaWFTYW1wbGU+PiwgQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2
b2lkIGVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZykg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0
b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQg
bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc2V0UmVhZHlGb3JNb3JlU2FtcGxlcyhib29sKTsKKyAgICB2b2lkIG5v
dGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMoKTsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50Jik7CisgICAgdm9pZCBkaWRSZWNl
aXZlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVB
bGxQZW5kaW5nU2FtcGxlcygpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUdTdHJlYW1lciosIFBhc3NSZWZQdHI8TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+LCBjb25zdCBDb250ZW50VHlwZSYpOworICAgIGZyaWVu
ZCBjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTsKKworICAgIE1lZGlhU291cmNl
R1N0cmVhbWVyKiBtX21lZGlhU291cmNlOworICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKKyAgICBS
ZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1fY2xpZW50OworICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKKyAgICBi
b29sIG1faXNSZWFkeUZvck1vcmVTYW1wbGVzOworICAgIGJvb2wgbV9ub3RpZnlXaGVuUmVhZHlG
b3JNb3JlU2FtcGxlczsKKyAgICBBdG9taWNTdHJpbmcgbV90cmFja0lkOworfTsKKworfQorCisj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292407</attachid>
            <date>2016-10-21 14:25:32 -0700</date>
            <delta_ts>2016-10-25 11:03:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162898-20161021212151.patch</filename>
            <type>text/plain</type>
            <size>21759</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk0ZDQ2MWMxYjk0MDcw
ZjEyZGE4MjUxMGEzNGFmZDBmM2Y3OTA0Mi4uYjNmNGZmMzQ1YmVkOGE0MGRmMDAzODI5NGY4ZjNl
OWE5NDJiNjAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBN
b3ZlZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHRvIGFuIG1zZSBkaXJlY3RvcnkgYW5k
IGFkZGVkIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMgKGFib3J0LCBlbnF1ZXVlaW5nIGFuZCBzYW1w
bGUgZmxvdyBjb250cm9sKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVl
dWVOb25EaXNwbGF5aW5nU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeUZvck1vcmVT
YW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlk
UmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmguCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxl
eiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtNU0VdIE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI4OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRk
N2ZkMjQ2NjVlMDVkYWM0MjQzNzZlY2U0NzRlMjM0YjY5Y2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1
bGFyLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikK
LQotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyJiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVu
dCwgY29udGVudFR5cGUpKTsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciYgY2xp
ZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVu
dFR5cGUpCi0gICAgLCBtX2NsaWVudCgmY2xpZW50KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZykKLXsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6flNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKQotewotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50ID0gY2xpZW50Owot
fQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKLQotICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2NsaWVudC0+YXBw
ZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0KTsKLX0KLQot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZXNl
dFBhcnNlclN0YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQotewotICAg
IG1fY2xpZW50LT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKHRoaXMpOwotfQotCi1NZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
c3RhdGUpCi17Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFRPRE86IEltcGxl
bWVudCB0aGVzZQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVu
cXVldWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0
b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBs
ZT4sIEF0b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNT
dHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjgyZjg2Yzc2ZWMwZWU5Mzc2MzJhODA2NWY0MzNiODY0YzRkYmZjMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQot
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyX2gKLSNkZWZpbmUgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoR1NUUkVBTUVSKQotCi0jaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyJiwgY29uc3QgQ29udGVudFR5cGUmKTsKLSAgICB2aXJ0dWFs
IH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7Ci0KLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hBbmRFbnF1ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJl
ZlB0cjxNZWRpYVNhbXBsZT4+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBlbnF1
ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNTdHJpbmcpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXNraW5nRm9y
TW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50
V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyJiwg
Y29uc3QgQ29udGVudFR5cGUmKTsKLQotICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQ
dHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKLSAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43M2EyYzBjYTEwY2M1NTMyYzkwNDc2MzI4ZWUyOGEzYmYxODFkMmRl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShN
ZWRpYVNvdXJjZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFJlZjxNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRT4gY2xpZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihtZWRp
YVNvdXJjZSwgY2xpZW50LmdldCgpLCBjb250ZW50VHlwZSkpOworfQorCitTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNl
R1N0cmVhbWVyKiBtZWRpYVNvdXJjZSwgUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
PiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKKyAgICA6IFNvdXJjZUJ1
ZmZlclByaXZhdGUoKQorICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKKyAgICAsIG1f
dHlwZShjb250ZW50VHlwZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudC5nZXQoKSkKK3sKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudCogY2xpZW50KQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCA9IGNsaWVudDsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFT
U0VSVChtX21lZGlhU291cmNlKTsKKworICAgIGlmICghbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBk
YXRhLCBsZW5ndGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpSZWFkU3RyZWFtRmFpbGVkKTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCit7CisgICAgbV9jbGllbnQtPmFib3J0KHRo
aXMpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlc2V0UGFyc2Vy
U3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7CisgICAgaWYgKG1f
bWVkaWFTb3VyY2UpCisgICAgICAgIG1fbWVkaWFTb3VyY2UtPnJlbW92ZVNvdXJjZUJ1ZmZlcih0
aGlzKTsKKyAgICBtX2NsaWVudC0+cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSh0aGlzKTsKK30KKwor
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUo
KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fbWVkaWFTb3VyY2UtPnNl
dFJlYWR5U3RhdGUoc3RhdGUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI6OmZsdXNoQW5kRW5xdWV1ZU5vbkRpc3BsYXlpbmdTYW1wbGVzKFZlY3RvcjxSZWZQdHI8TWVk
aWFTYW1wbGU+PiBzYW1wbGVzLCBBdG9taWNTdHJpbmcpCit7CisgICAgbV9jbGllbnQtPmZsdXNo
QW5kRW5xdWV1ZU5vbkRpc3BsYXlpbmdTYW1wbGVzKHNhbXBsZXMpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNh
bXBsZT4gcHJwU2FtcGxlLCBBdG9taWNTdHJpbmcpCit7CisgICAgbV9ub3RpZnlXaGVuUmVhZHlG
b3JNb3JlU2FtcGxlcyA9IGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwcm90ZWN0
ZWRQcnBTYW1wbGUgPSBwcnBTYW1wbGU7CisgICAgbV9jbGllbnQtPmVucXVldWVTYW1wbGUocHJv
dGVjdGVkUHJwU2FtcGxlKTsKK30KKworYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
Ojppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKQoreworICAgIHJldHVybiBtX2lz
UmVhZHlGb3JNb3JlU2FtcGxlczsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyOjpzZXRSZWFkeUZvck1vcmVTYW1wbGVzKGJvb2wgaXNSZWFkeSkKK3sKKyAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgbV9pc1JlYWR5Rm9yTW9yZVNhbXBsZXMgPSBpc1Jl
YWR5OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVJlYWR5
Rm9yTW9yZVNhbXBsZXMoKQoreworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAg
ICBzZXRSZWFkeUZvck1vcmVTYW1wbGVzKHRydWUpOworICAgIGlmIChtX25vdGlmeVdoZW5SZWFk
eUZvck1vcmVTYW1wbGVzKQorICAgICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHRoaXMsIG1fdHJh
Y2tJZCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QWN0aXZl
KGJvb2wgaXNBY3RpdmUpCit7CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpCisgICAgICAgIG1fbWVk
aWFTb3VyY2UtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZSh0aGlzLCBp
c0FjdGl2ZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c3RvcEFz
a2luZ0Zvck1vcmVTYW1wbGVzKEF0b21pY1N0cmluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeUNsaWVudFdo
ZW5SZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0cmluZyB0cmFja0lkKQoreworICAgIEFTU0VS
VChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBtX25vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1w
bGVzID0gdHJ1ZTsKKyAgICBtX3RyYWNrSWQgPSB0cmFja0lkOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29u
c3QgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiBpbml0
aWFsaXphdGlvblNlZ21lbnQpCit7CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCkKKyAgICAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCh0aGlzLCBpbml0aWFsaXphdGlvblNl
Z21lbnQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2Vp
dmVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4gcHJwU2FtcGxlKQoreworICAgIFJlZlB0
cjxNZWRpYVNhbXBsZT4gcHJvdGVjdGVkUHJwU2FtcGxlID0gcHJwU2FtcGxlOworICAgIGlmICht
X3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUodGhpcywgKnByb3Rl
Y3RlZFBycFNhbXBsZSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZGlkUmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKCkKK3sKKyAgICBpZiAobV9zb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50KQorICAgICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRTdWNjZWVkZWQpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0OTM5
MGY0YzFhZDk2NjdkYThjMjcwNjVkNmIzM2I5NTdjZTE3MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBPcmFuZ2UKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJh
c3RpYW5AY2VudHJpY3VsYXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IE1ldHJv
bG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgSWdhbGlhLCBT
LkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShHU1RSRUFNRVIp
CisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKyNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViS2l0TWVkaWFT
b3VyY2VHU3RyZWFtZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNv
dXJjZUdTdHJlYW1lcjsKKworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKKworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlhU291cmNlR1N0cmVh
bWVyKiwgUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgY29uc3QgQ29udGVudFR5
cGUmKTsKKyAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCkgPSBkZWZh
dWx0OworCisgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVs
bHB0cjsgfQorCisgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCop
IG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25l
ZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhYm9ydCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXRQ
YXJzZXJTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgp
IG92ZXJyaWRlOworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBmbHVzaEFuZEVucXVldWVOb25EaXNwbGF5aW5nU2Ft
cGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0b21pY1N0cmluZykgb3ZlcnJpZGU7
CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNT
dHJpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0
cmluZykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzdG9wQXNraW5nRm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAg
ICB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0cmluZykg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFJlYWR5Rm9yTW9yZVNhbXBsZXMoYm9vbCk7CisgICAg
dm9pZCBub3RpZnlSZWFkeUZvck1vcmVTYW1wbGVzKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKFBhc3NSZWZQ
dHI8TWVkaWFTYW1wbGU+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBbGxQZW5kaW5nU2FtcGxlcygp
OworCitwcml2YXRlOgorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoTWVkaWFTb3Vy
Y2VHU3RyZWFtZXIqLCBSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+LCBjb25zdCBD
b250ZW50VHlwZSYpOworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRTsKKworICAgIE1lZGlhU291cmNlR1N0cmVhbWVyKiBtX21lZGlhU291cmNlOworICAgIENv
bnRlbnRUeXBlIG1fdHlwZTsKKyAgICBSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+
IG1fY2xpZW50OworICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDsKKyAgICBib29sIG1faXNSZWFkeUZvck1vcmVTYW1wbGVzID0gdHJ1ZTsK
KyAgICBib29sIG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMgPSBmYWxzZTsKKyAgICBB
dG9taWNTdHJpbmcgbV90cmFja0lkOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292780</attachid>
            <date>2016-10-25 11:03:52 -0700</date>
            <delta_ts>2016-10-26 01:20:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162898-20161025180005.patch</filename>
            <type>text/plain</type>
            <size>21611</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkM2MyZDQ0OGU2YWE1
NjM2NDRlZTNiY2IwNDcxNTJhODZlNjIzYS4uMjRmZjU4NjVkNjBhNDM1NTBmNWE5MTllNDA4YzNk
ZjgyOTFhMGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBN
b3ZlZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHRvIGFuIG1zZSBkaXJlY3RvcnkgYW5k
IGFkZGVkIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMgKGFib3J0LCBlbnF1ZXVlaW5nIGFuZCBzYW1w
bGUgZmxvdyBjb250cm9sKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVl
dWVOb25EaXNwbGF5aW5nU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeUZvck1vcmVT
YW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlk
UmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmguCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxl
eiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtNU0VdIE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI4OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRk
N2ZkMjQ2NjVlMDVkYWM0MjQzNzZlY2U0NzRlMjM0YjY5Y2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1
bGFyLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikK
LQotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyJiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVu
dCwgY29udGVudFR5cGUpKTsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciYgY2xp
ZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVu
dFR5cGUpCi0gICAgLCBtX2NsaWVudCgmY2xpZW50KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZykKLXsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6flNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKQotewotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50ID0gY2xpZW50Owot
fQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKLQotICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2NsaWVudC0+YXBw
ZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0KTsKLX0KLQot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZXNl
dFBhcnNlclN0YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQotewotICAg
IG1fY2xpZW50LT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKHRoaXMpOwotfQotCi1NZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
c3RhdGUpCi17Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFRPRE86IEltcGxl
bWVudCB0aGVzZQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVu
cXVldWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0
b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBs
ZT4sIEF0b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNT
dHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjgyZjg2Yzc2ZWMwZWU5Mzc2MzJhODA2NWY0MzNiODY0YzRkYmZjMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQot
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyX2gKLSNkZWZpbmUgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoR1NUUkVBTUVSKQotCi0jaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyJiwgY29uc3QgQ29udGVudFR5cGUmKTsKLSAgICB2aXJ0dWFs
IH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7Ci0KLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hBbmRFbnF1ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJl
ZlB0cjxNZWRpYVNhbXBsZT4+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBlbnF1
ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNTdHJpbmcpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXNraW5nRm9y
TW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50
V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyJiwg
Y29uc3QgQ29udGVudFR5cGUmKTsKLQotICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQ
dHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKLSAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzAxZTAzNzIzZDFiYmIyYmI1OWVmMDRmNWJiMWY0MmQyNWZjMTVh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShN
ZWRpYVNvdXJjZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFJlZjxNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRT4gY2xpZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihtZWRp
YVNvdXJjZSwgY2xpZW50LmdldCgpLCBjb250ZW50VHlwZSkpOworfQorCitTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNl
R1N0cmVhbWVyKiBtZWRpYVNvdXJjZSwgUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
PiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKKyAgICA6IFNvdXJjZUJ1
ZmZlclByaXZhdGUoKQorICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKKyAgICAsIG1f
dHlwZShjb250ZW50VHlwZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudC5nZXQoKSkKK3sKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudCogY2xpZW50KQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCA9IGNsaWVudDsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFT
U0VSVChtX21lZGlhU291cmNlKTsKKworICAgIGlmICghbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBk
YXRhLCBsZW5ndGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpSZWFkU3RyZWFtRmFpbGVkKTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCit7CisgICAgbV9jbGllbnQtPmFib3J0KHRo
aXMpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlc2V0UGFyc2Vy
U3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7CisgICAgaWYgKG1f
bWVkaWFTb3VyY2UpCisgICAgICAgIG1fbWVkaWFTb3VyY2UtPnJlbW92ZVNvdXJjZUJ1ZmZlcih0
aGlzKTsKKyAgICBtX2NsaWVudC0+cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSh0aGlzKTsKK30KKwor
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUo
KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fbWVkaWFTb3VyY2UtPnNl
dFJlYWR5U3RhdGUoc3RhdGUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQoreworICAgIG1fY2xpZW50LT5mbHVzaCh0
cmFja0lkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjplbnF1ZXVl
U2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSwgQXRvbWljU3RyaW5nKQor
eworICAgIG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMgPSBmYWxzZTsKKworICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcHJvdGVjdGVkUHJwU2FtcGxlID0gcHJwU2FtcGxlOworICAgIG1f
Y2xpZW50LT5lbnF1ZXVlU2FtcGxlKHByb3RlY3RlZFBycFNhbXBsZSk7Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0
cmluZykKK3sKKyAgICByZXR1cm4gbV9pc1JlYWR5Rm9yTW9yZVNhbXBsZXM7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlGb3JNb3JlU2FtcGxlcyhib29s
IGlzUmVhZHkpCit7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIG1faXNS
ZWFkeUZvck1vcmVTYW1wbGVzID0gaXNSZWFkeTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlSZWFkeUZvck1vcmVTYW1wbGVzKCkKK3sKKyAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgc2V0UmVhZHlGb3JNb3JlU2FtcGxlcyh0cnVlKTsK
KyAgICBpZiAobV9ub3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcykKKyAgICAgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlG
b3JNb3JlU2FtcGxlcyh0aGlzLCBtX3RyYWNrSWQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OnNldEFjdGl2ZShib29sIGlzQWN0aXZlKQoreworICAgIGlmIChtX21l
ZGlhU291cmNlKQorICAgICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJQcml2YXRlRGlk
Q2hhbmdlQWN0aXZlU3RhdGUodGhpcywgaXNBY3RpdmUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJp
bmcgdHJhY2tJZCkKK3sKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgbV9u
b3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyA9IHRydWU7CisgICAgbV90cmFja0lkID0gdHJh
Y2tJZDsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYgaW5pdGlhbGl6YXRpb25TZWdtZW50KQoreworICAgIGlmICht
X3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQodGhpcywgaW5pdGlhbGl6YXRpb25TZWdtZW50KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+
IHBycFNhbXBsZSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHByb3RlY3RlZFBycFNhbXBs
ZSA9IHBycFNhbXBsZTsKKyAgICBpZiAobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAg
ICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlU2FtcGxlKHRoaXMsICpwcm90ZWN0ZWRQcnBTYW1wbGUpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVBbGxQZW5kaW5nU2FtcGxlcygpCit7
CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhp
cywgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwODQyNWQ1MDNjYWE0ZWI4NjhiMzg5OTliNWQ0Njc2OGRkNTQ5
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IElnYWxpYSwgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5o
IgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTb3VyY2VHU3RyZWFtZXI7CisKK2NsYXNzIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IGNyZWF0ZShNZWRpYVNvdXJjZUdTdHJlYW1lciosIFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJl
YW1lck1TRT4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJj
ZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZChjb25z
dCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgYWJvcnQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKKworICAgIHZvaWQgZmx1c2go
QXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUGFzc1JlZlB0
cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlYWR5
Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2
ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9t
aWNTdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9y
ZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0UmVhZHlGb3JN
b3JlU2FtcGxlcyhib29sKTsKKyAgICB2b2lkIG5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMoKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKCk7CisKK3ByaXZhdGU6CisgICAgU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUdTdHJlYW1lciosIFJlZjxNZWRpYVNvdXJjZUNsaWVu
dEdTdHJlYW1lck1TRT4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOworCisgICAgTWVkaWFTb3VyY2VHU3RyZWFtZXIq
IG1fbWVkaWFTb3VyY2U7CisgICAgQ29udGVudFR5cGUgbV90eXBlOworICAgIFJlZjxNZWRpYVNv
dXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbV9jbGllbnQ7CisgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCogbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OworICAgIGJvb2wgbV9pc1JlYWR5
Rm9yTW9yZVNhbXBsZXMgPSB0cnVlOworICAgIGJvb2wgbV9ub3RpZnlXaGVuUmVhZHlGb3JNb3Jl
U2FtcGxlcyA9IGZhbHNlOworICAgIEF0b21pY1N0cmluZyBtX3RyYWNrSWQ7Cit9OworCit9CisK
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292892</attachid>
            <date>2016-10-26 01:20:08 -0700</date>
            <delta_ts>2016-10-26 01:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162898-20161026081620.patch</filename>
            <type>text/plain</type>
            <size>21611</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRkMjIyNGRkMzExZDgw
NGU4OGI3OTkwNjE4MTBlMDNjMTlmNzBkMi4uNmY1NDMxNGM0NjM2MzRlZTNmM2JhNGEzNjJiZTky
ZTUxYjYxOGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE2LTEwLTI2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6LUNhbHZhci4KKworICAgICAgICBN
b3ZlZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIHRvIGFuIG1zZSBkaXJlY3RvcnkgYW5k
IGFkZGVkIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMgKGFib3J0LCBlbnF1ZXVlaW5nIGFuZCBzYW1w
bGUgZmxvdyBjb250cm9sKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6On5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpyZW1vdmVkRnJvbU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVucXVl
dWVOb25EaXNwbGF5aW5nU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeUZvck1vcmVT
YW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGllbnRX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlk
UmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmguCisKKzIwMTYtMTAtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxl
eiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtNU0VdIE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI4OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRk
N2ZkMjQ2NjVlMDVkYWM0MjQzNzZlY2U0NzRlMjM0YjY5Y2U3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1
bGFyLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikK
LQotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKE1lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyJiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVu
dCwgY29udGVudFR5cGUpKTsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciYgY2xp
ZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVu
dFR5cGUpCi0gICAgLCBtX2NsaWVudCgmY2xpZW50KQotICAgICwgbV9yZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZykKLXsKLX0KLQotU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6flNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKQotewotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50ID0gY2xpZW50Owot
fQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKLQotICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2NsaWVudC0+YXBw
ZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0KTsKLX0KLQot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZXNl
dFBhcnNlclN0YXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQotewotICAg
IG1fY2xpZW50LT5yZW1vdmVkRnJvbU1lZGlhU291cmNlKHRoaXMpOwotfQotCi1NZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
c3RhdGUpCi17Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci19Ci0KLS8vIFRPRE86IEltcGxl
bWVudCB0aGVzZQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaEFuZEVu
cXVldWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0
b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI6OmVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBs
ZT4sIEF0b21pY1N0cmluZykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNT
dHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjgyZjg2Yzc2ZWMwZWU5Mzc2MzJhODA2NWY0MzNiODY0YzRkYmZjMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQot
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyX2gKLSNkZWZpbmUgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoR1NUUkVBTUVSKQotCi0jaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKE1lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyJiwgY29uc3QgQ29udGVudFR5cGUmKTsKLSAgICB2aXJ0dWFs
IH5Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7Ci0KLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hBbmRFbnF1ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJl
ZlB0cjxNZWRpYVNhbXBsZT4+LCBBdG9taWNTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBlbnF1
ZXVlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+LCBBdG9taWNTdHJpbmcpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXNraW5nRm9y
TW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50
V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyJiwg
Y29uc3QgQ29udGVudFR5cGUmKTsKLQotICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQ
dHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+IG1fY2xpZW50OwotICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDsKLSAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci19OwotCi19Ci0KLSNlbmRpZgotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzAxZTAzNzIzZDFiYmIyYmI1OWVmMDRmNWJiMWY0MmQyNWZjMTVh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE9yYW5nZQorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBJZ2FsaWEsIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VHU3RyZWFtZXIu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShN
ZWRpYVNvdXJjZUdTdHJlYW1lciogbWVkaWFTb3VyY2UsIFJlZjxNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRT4gY2xpZW50LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihtZWRp
YVNvdXJjZSwgY2xpZW50LmdldCgpLCBjb250ZW50VHlwZSkpOworfQorCitTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU291cmNl
R1N0cmVhbWVyKiBtZWRpYVNvdXJjZSwgUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
PiBjbGllbnQsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKKyAgICA6IFNvdXJjZUJ1
ZmZlclByaXZhdGUoKQorICAgICwgbV9tZWRpYVNvdXJjZShtZWRpYVNvdXJjZSkKKyAgICAsIG1f
dHlwZShjb250ZW50VHlwZSkKKyAgICAsIG1fY2xpZW50KGNsaWVudC5nZXQoKSkKK3sKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudCogY2xpZW50KQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dCA9IGNsaWVudDsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEFT
U0VSVChtX21lZGlhU291cmNlKTsKKworICAgIGlmICghbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBk
YXRhLCBsZW5ndGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSh0aGlzLCBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpSZWFkU3RyZWFtRmFpbGVkKTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjphYm9ydCgpCit7CisgICAgbV9jbGllbnQtPmFib3J0KHRo
aXMpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnJlc2V0UGFyc2Vy
U3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7CisgICAgaWYgKG1f
bWVkaWFTb3VyY2UpCisgICAgICAgIG1fbWVkaWFTb3VyY2UtPnJlbW92ZVNvdXJjZUJ1ZmZlcih0
aGlzKTsKKyAgICBtX2NsaWVudC0+cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSh0aGlzKTsKK30KKwor
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPnJlYWR5U3RhdGUo
KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fbWVkaWFTb3VyY2UtPnNl
dFJlYWR5U3RhdGUoc3RhdGUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQoreworICAgIG1fY2xpZW50LT5mbHVzaCh0
cmFja0lkKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjplbnF1ZXVl
U2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSwgQXRvbWljU3RyaW5nKQor
eworICAgIG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMgPSBmYWxzZTsKKworICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcHJvdGVjdGVkUHJwU2FtcGxlID0gcHJwU2FtcGxlOworICAgIG1f
Y2xpZW50LT5lbnF1ZXVlU2FtcGxlKHByb3RlY3RlZFBycFNhbXBsZSk7Cit9CisKK2Jvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0
cmluZykKK3sKKyAgICByZXR1cm4gbV9pc1JlYWR5Rm9yTW9yZVNhbXBsZXM7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlGb3JNb3JlU2FtcGxlcyhib29s
IGlzUmVhZHkpCit7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIG1faXNS
ZWFkeUZvck1vcmVTYW1wbGVzID0gaXNSZWFkeTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlSZWFkeUZvck1vcmVTYW1wbGVzKCkKK3sKKyAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgc2V0UmVhZHlGb3JNb3JlU2FtcGxlcyh0cnVlKTsK
KyAgICBpZiAobV9ub3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcykKKyAgICAgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlG
b3JNb3JlU2FtcGxlcyh0aGlzLCBtX3RyYWNrSWQpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI6OnNldEFjdGl2ZShib29sIGlzQWN0aXZlKQoreworICAgIGlmIChtX21l
ZGlhU291cmNlKQorICAgICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJQcml2YXRlRGlk
Q2hhbmdlQWN0aXZlU3RhdGUodGhpcywgaXNBY3RpdmUpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI6OnN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJp
bmcgdHJhY2tJZCkKK3sKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgbV9u
b3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyA9IHRydWU7CisgICAgbV90cmFja0lkID0gdHJh
Y2tJZDsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYgaW5pdGlhbGl6YXRpb25TZWdtZW50KQoreworICAgIGlmICht
X3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQodGhpcywgaW5pdGlhbGl6YXRpb25TZWdtZW50KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpkaWRSZWNlaXZlU2FtcGxlKFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+
IHBycFNhbXBsZSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHByb3RlY3RlZFBycFNhbXBs
ZSA9IHBycFNhbXBsZTsKKyAgICBpZiAobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAg
ICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlU2FtcGxlKHRoaXMsICpwcm90ZWN0ZWRQcnBTYW1wbGUpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVBbGxQZW5kaW5nU2FtcGxlcygpCit7
CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhp
cywgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwODQyNWQ1MDNjYWE0ZWI4NjhiMzg5OTliNWQ0Njc2OGRkNTQ5
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgT3JhbmdlCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IElnYWxpYSwgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCIKKyNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5o
IgorI2luY2x1ZGUgIldlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTb3VyY2VHU3RyZWFtZXI7CisKK2NsYXNzIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
IGNyZWF0ZShNZWRpYVNvdXJjZUdTdHJlYW1lciosIFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJl
YW1lck1TRT4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJj
ZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZChjb25z
dCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgYWJvcnQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKKworICAgIHZvaWQgZmx1c2go
QXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUGFzc1JlZlB0
cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlYWR5
Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjdGl2
ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBc2tpbmdGb3JNb3JlU2FtcGxlcyhBdG9t
aWNTdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9y
ZVNhbXBsZXMoQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0UmVhZHlGb3JN
b3JlU2FtcGxlcyhib29sKTsKKyAgICB2b2lkIG5vdGlmeVJlYWR5Rm9yTW9yZVNhbXBsZXMoKTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4pOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKCk7CisKK3ByaXZhdGU6CisgICAgU291cmNlQnVmZmVyUHJp
dmF0ZUdTdHJlYW1lcihNZWRpYVNvdXJjZUdTdHJlYW1lciosIFJlZjxNZWRpYVNvdXJjZUNsaWVu
dEdTdHJlYW1lck1TRT4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOworCisgICAgTWVkaWFTb3VyY2VHU3RyZWFtZXIq
IG1fbWVkaWFTb3VyY2U7CisgICAgQ29udGVudFR5cGUgbV90eXBlOworICAgIFJlZjxNZWRpYVNv
dXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbV9jbGllbnQ7CisgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCogbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OworICAgIGJvb2wgbV9pc1JlYWR5
Rm9yTW9yZVNhbXBsZXMgPSB0cnVlOworICAgIGJvb2wgbV9ub3RpZnlXaGVuUmVhZHlGb3JNb3Jl
U2FtcGxlcyA9IGZhbHNlOworICAgIEF0b21pY1N0cmluZyBtX3RyYWNrSWQ7Cit9OworCit9CisK
KyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>