<?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>82450</bug_id>
          
          <creation_ts>2012-03-28 04:53:30 -0700</creation_ts>
          <short_desc>[chromium] MediaStream API (JSEP): Introducing WebPeerConnection00Handler</short_desc>
          <delta_ts>2012-03-29 01:34:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>589852</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-28 04:53:30 -0700</bug_when>
    <thetext>Last patch to enable the PeerConnection00 functionality in Chromium introduces WebPeerConnection00Handler and WebPeerConnection00HandlerClient, together with the necessary plumbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589874</commentid>
    <comment_count>1</comment_count>
      <attachid>134272</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-28 05:31:54 -0700</bug_when>
    <thetext>Created attachment 134272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589879</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 05:35:33 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590119</commentid>
    <comment_count>3</comment_count>
      <attachid>134272</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-28 10:42:18 -0700</bug_when>
    <thetext>Comment on attachment 134272
Patch

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

I&apos;m marking this cq+ to avoid the over night round-trip, but please post a followup patch that adds the comment below.  Many thanks!

&gt; Source/WebKit/chromium/bridge/PeerConnection00HandlerInternal.cpp:60
&gt; +    m_webHandler = adoptPtr(WebKit::webKitPlatformSupport()-&gt;createPeerConnection00Handler(this));

Can this fail?

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:413
&gt;      virtual WebPeerConnectionHandler* createPeerConnectionHandler(WebPeerConnectionHandlerClient*) { return 0; }
&gt; +    virtual WebPeerConnection00Handler* createPeerConnection00Handler(WebPeerConnection00HandlerClient*) { return 0; }

Can you add a comment explaining the difference between these two?  This probably looks confusing for folks who haven&apos;t been following this discussion in detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590210</commentid>
    <comment_count>4</comment_count>
      <attachid>134272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 11:44:24 -0700</bug_when>
    <thetext>Comment on attachment 134272
Patch

Clearing flags on attachment: 134272

Committed r112421: &lt;http://trac.webkit.org/changeset/112421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590211</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 11:44:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590943</commentid>
    <comment_count>6</comment_count>
      <attachid>134272</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-29 01:34:17 -0700</bug_when>
    <thetext>Comment on attachment 134272
Patch

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

&gt;&gt; Source/WebKit/chromium/bridge/PeerConnection00HandlerInternal.cpp:60
&gt;&gt; +    m_webHandler = adoptPtr(WebKit::webKitPlatformSupport()-&gt;createPeerConnection00Handler(this));
&gt; 
&gt; Can this fail?

Yes, it can if something erroneous happens in the Chromium code for example.

There is a comment regarding this in WebKitPlatformSupport.h.

&gt;&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:413
&gt;&gt; +    virtual WebPeerConnection00Handler* createPeerConnection00Handler(WebPeerConnection00HandlerClient*) { return 0; }
&gt; 
&gt; Can you add a comment explaining the difference between these two?  This probably looks confusing for folks who haven&apos;t been following this discussion in detail.

Will do.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134272</attachid>
            <date>2012-03-28 05:31:54 -0700</date>
            <delta_ts>2012-03-29 01:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82450-20120328143152.patch</filename>
            <type>text/plain</type>
            <size>34362</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ2NDFjZmQ5OTIzZGU4
OGEzMzc3MjU5NjQyNjE5YjA3ZmI2MDBhZi4uZjM0MGNiODg4ZjdlMDM5NTc0YmUzMGJjMWNmYjNl
NTc3NmJhZjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
NDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgcmVtb3ZlcyB0aGUgZGVmYXVsdCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5jcHAg
ZnJvbSB0aGUgQ2hyb21pdW0gYnVpbGQuCisKKyAgICAgICAgQSBtYWpvciBvdmVyaGF1bCBvZiB0
aGUgZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGlzIGZvcnRoY29taW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
MDBIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBlZXJDb25uZWN0aW9u
MDBIYW5kbGVyKToKKwogMjAxMi0wMy0yOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OOiBTdGFjayBvdmVy
ZmxvdyBvbiB0aGUgcGFnZSB3aXRoID4gMTAwa2xvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA1ZjBhY2JjOTRhNWI4NDA5MGJiZDgyNzdlODBjMjY2NWE4YjZlMTA4Li41Zjc1MzhkMDRl
YzYxNjYwNTM2NGFjNGVjN2JhZDhlYjIzOTBkYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15
d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChKU0VQ
KTogSW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNDUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGFzdCBwYXRjaCB0byBlbmFibGUgdGhl
IFBlZXJDb25uZWN0aW9uMDAgZnVuY3Rpb25hbGl0eSBpbiBDaHJvbWl1bSBpbnRyb2R1Y2VzCisg
ICAgICAgIFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyIGFuZCBXZWJQZWVyQ29ubmVjdGlvbjAw
SGFuZGxlckNsaWVudCwgdG9nZXRoZXIgd2l0aCB0aGUgbmVjZXNzYXJ5IHBsdW1iaW5nLgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBicmlkZ2UvUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjAwSGFuZGxlcjo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6On5QZWVyQ29ubmVjdGlvbjAwSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6Y3JlYXRlT2Zm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6OmNyZWF0ZUFu
c3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6c2V0TG9j
YWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxl
cjo6c2V0UmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b24wMEhhbmRsZXI6OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb24wMEhhbmRsZXI6OnJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpzdGFydEljZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6cHJvY2Vzc0ljZU1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpzdG9wKToKKyAgICAgICAgKiBicmlkZ2Uv
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFs
OjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6On5QZWVyQ29ubmVjdGlvbjAwSGFuZGxlcklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJu
YWw6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5k
bGVySW50ZXJuYWw6OmNyZWF0ZUFuc3dlcik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjAwSGFuZGxlckludGVybmFsOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OnNldFJlbW90ZURlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6
OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhh
bmRsZXJJbnRlcm5hbDo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6c3RhcnRJY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6cHJvY2Vzc0ljZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6YWRkU3Ry
ZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6
OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ckludGVybmFsOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uMDBIYW5k
bGVySW50ZXJuYWw6OmRpZEdlbmVyYXRlSUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6ZGlkQ2hh
bmdlSUNFU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJ
bnRlcm5hbDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAg
ICogYnJpZGdlL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWwuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRs
ZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlUGVlckNvbm5lY3Rpb24wMEhhbmRs
ZXIpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQZWVyQ29ubmVjdGlv
bjAwSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Ojp+V2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9y
bS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50Ojp+V2ViUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcDoKKwogMjAxMi0wMy0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmcgdmlhIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkZDE0MjFlNDc5
MjhlZWIwZjgxMjE2MGNhMGVkZWUyYzdjZTg3YTJmLi5lYjlmNjRmZjExNWM4NWMwOGI4YzhkMDk4
OGVmODFkMTFjODFiNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MjgsNyArNDI4LDYgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2Uu
aCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbjAwSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXIuaAppbmRleCAwMWY3MjdjOGEzZWE1MTg5ZDA2NTFkMzYxNjA0NDJlOWI2NTEzMjI2
Li4xNzBmMDYyNDZiYjIxY2RmZjE2NzFkZjIxODFiZDNjYzg0NTFmN2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDBIYW5kbGVyLmgKQEAgLTQ2LDYgKzQ2LDEwIEBAIGNsYXNzIE1lZGlhSGludHM7CiBjbGFz
cyBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudDsKIGNsYXNzIFNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I7CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK2NsYXNzIFBlZXJDb25uZWN0
aW9uMDBIYW5kbGVySW50ZXJuYWw7CisjZW5kaWYKKwogY2xhc3MgUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY4LDcgKzcyLDExIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIoUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0
IFN0cmluZyYgdXNlcm5hbWUpOwogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3duUHRy
PFBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw+IG1fcHJpdmF0ZTsKKyNlbHNlCiAgICAg
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjRk
YjNlNGFiNTIzODY3NGYwZmNiMWQ3YzU5ZWRmY2FhYzc4NGEwNi4uYjAzNWM3MGViYzc1ZjIwNWI2
MzAzYWU3Y2U2MTQyZGU0ZThiZGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
OTcsNiArOTcsOSBAQAogICAgICAgICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwu
Y3BwJywKICAgICAgICAgICAgICAgICAnYnJpZGdlL01lZGlhU3RyZWFtQ2VudGVySW50ZXJuYWwu
aCcsCisgICAgICAgICAgICAgICAgJ2JyaWRnZS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5jcHAn
LAorICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5h
bC5jcHAnLAorICAgICAgICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJ
bnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaCcs
CkBAIC0zMjgsNiArMzMxLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L3BsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYlBvaW50Lmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvUGVlckNvbm5lY3Rp
b24wMEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvUGVlckNvbm5l
Y3Rpb24wMEhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNGUwYTgzNzU5ZGVkMmNjYTEyMWIzNjlm
YWRiYmEwY2I2NzBjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2JyaWRnZS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCIKKworI2luY2x1ZGUgIkljZUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJJY2VPcHRpb25zLmgiCisjaW5jbHVkZSAiTWVk
aWFIaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rp
b24wMEhhbmRsZXJJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFBlZXJDb25uZWN0
aW9uMDBIYW5kbGVyPiBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6Y3JlYXRlKFBlZXJDb25uZWN0
aW9uMDBIYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJh
dGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyKGNsaWVudCwgc2VydmVyQ29uZmlndXJhdGlvbiwgdXNl
cm5hbWUpKTsKK30KKworUGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6OlBlZXJDb25uZWN0aW9uMDBI
YW5kbGVyKFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKKyAgICA6IG1f
cHJpdmF0ZShhZG9wdFB0cihuZXcgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbChjbGll
bnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVzZXJuYW1lKSkpCit7Cit9CisKK1BlZXJDb25uZWN0
aW9uMDBIYW5kbGVyOjp+UGVlckNvbm5lY3Rpb24wMEhhbmRsZXIoKQoreworfQorCitQYXNzUmVm
UHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
OjpjcmVhdGVPZmZlcihQYXNzUmVmUHRyPE1lZGlhSGludHM+IG1lZGlhSGludHMpCit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlT2ZmZXIobWVkaWFIaW50cyk7Cit9CisKK1Bhc3NSZWZQ
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gUGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6
OmNyZWF0ZUFuc3dlcihjb25zdCBTdHJpbmcmIG9mZmVyLCBQYXNzUmVmUHRyPE1lZGlhSGludHM+
IG1lZGlhSGludHMpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlQW5zd2VyKG9mZmVy
LCBtZWRpYUhpbnRzKTsKK30KKworYm9vbCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6c2V0TG9j
YWxEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I+IHNlc3Npb25EZXNjcmlwdGlvbikKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5z
ZXRMb2NhbERlc2NyaXB0aW9uKGFjdGlvbiwgc2Vzc2lvbkRlc2NyaXB0aW9uKTsKK30KKworYm9v
bCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6c2V0UmVtb3RlRGVzY3JpcHRpb24oaW50IGFjdGlv
biwgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBzZXNzaW9uRGVzY3Jp
cHRpb24pCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2V0UmVtb3RlRGVzY3JpcHRpb24oYWN0
aW9uLCBzZXNzaW9uRGVzY3JpcHRpb24pOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I+IFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpsb2NhbERlc2NyaXB0aW9u
KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sb2NhbERlc2NyaXB0aW9uKCk7Cit9CisKK1Bh
c3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXI6OnJlbW90ZURlc2NyaXB0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yZW1v
dGVEZXNjcmlwdGlvbigpOworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpzdGFy
dEljZShQYXNzUmVmUHRyPEljZU9wdGlvbnM+IGljZU9wdGlvbnMpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+c3RhcnRJY2UoaWNlT3B0aW9ucyk7Cit9CisKK2Jvb2wgUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXI6OnByb2Nlc3NJY2VNZXNzYWdlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvcj4gaWNlQ2FuZGlkYXRlKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnByb2Nlc3NJY2VN
ZXNzYWdlKGljZUNhbmRpZGF0ZSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXI6
OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbWVkaWFTdHJlYW0p
Cit7CisgICAgbV9wcml2YXRlLT5hZGRTdHJlYW0obWVkaWFTdHJlYW0pOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpyZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IG1lZGlhU3RyZWFtKQoreworICAgIG1fcHJpdmF0ZS0+cmVtb3ZlU3RyZWFt
KG1lZGlhU3RyZWFtKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6c3RvcCgp
Cit7CisgICAgbV9wcml2YXRlLT5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50
ZXJuYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MzUyN2NlMDQ1Zjk5YWVlY2JlMzM2MDEzMTc3NzE1YmVk
YzUwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9Q
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsLmNwcApAQCAtMCwwICsxLDE4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
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
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsLmgiCisKKyNpbmNsdWRlICJJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiSWNlT3B0aW9ucy5oIgorI2luY2x1ZGUgIk1lZGlh
SGludHMuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbjAwLmgiCisjaW5jbHVkZSAiUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYklDRU9wdGlv
bnMuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rp
b24wMEhhbmRsZXIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFu
ZGxlckNsaWVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OlBlZXJDb25uZWN0aW9u
MDBIYW5kbGVySW50ZXJuYWwoUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1l
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAg
bV93ZWJIYW5kbGVyID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
Y3JlYXRlUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIodGhpcykpOworICAgIC8vIEZJWE1FOiBXaGVu
IHRoZXJlIGlzIHNvbWUgZXJyb3IgcmVwb3J0aW5nIGF2YWxpYWJsZSBpbiB0aGUgUGVlckNvbm5l
Y3Rpb24gb2JqZWN0IHJlcG9ydAorICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSBXZWJQZWVyQ29u
bmVjdGlvbjAwSGFuZGxlciBpbnN0YW5jZS4KKworICAgIGlmIChtX3dlYkhhbmRsZXIpCisgICAg
ICAgIG1fd2ViSGFuZGxlci0+aW5pdGlhbGl6ZShzZXJ2ZXJDb25maWd1cmF0aW9uLCB1c2VybmFt
ZSk7Cit9CisKK1BlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6On5QZWVyQ29ubmVjdGlv
bjAwSGFuZGxlckludGVybmFsKCkKK3sKK30KKworUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yPiBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsOjpjcmVhdGVPZmZl
cihQYXNzUmVmUHRyPE1lZGlhSGludHM+IG1lZGlhSGludHMpCit7CisgICAgaWYgKCFtX3dlYkhh
bmRsZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+Y3Jl
YXRlT2ZmZXIobWVkaWFIaW50cyk7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcj4gUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6Y3JlYXRlQW5zd2Vy
KGNvbnN0IFN0cmluZyYgb2ZmZXIsIFBhc3NSZWZQdHI8TWVkaWFIaW50cz4gbWVkaWFIaW50cykK
K3sKKyAgICBpZiAoIW1fd2ViSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gbV93ZWJIYW5kbGVyLT5jcmVhdGVBbnN3ZXIob2ZmZXIsIG1lZGlhSGludHMpOworfQorCiti
b29sIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OnNldExvY2FsRGVzY3JpcHRpb24o
aW50IGFjdGlvbiwgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBzZXNz
aW9uRGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFtX3dlYkhhbmRsZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNldExvY2FsRGVzY3JpcHRpb24o
c3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6QWN0aW9uPihh
Y3Rpb24pLCBzZXNzaW9uRGVzY3JpcHRpb24pOworfQorCitib29sIFBlZXJDb25uZWN0aW9uMDBI
YW5kbGVySW50ZXJuYWw6OnNldFJlbW90ZURlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBhc3NSZWZQ
dHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gc2Vzc2lvbkRlc2NyaXB0aW9uKQorewor
ICAgIGlmICghbV93ZWJIYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbV93ZWJIYW5kbGVyLT5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdGF0aWNfY2FzdDxXZWJLaXQ6
OldlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpBY3Rpb24+KGFjdGlvbiksIHNlc3Npb25EZXNj
cmlwdGlvbik7Cit9CisKK1Bhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4g
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6bG9jYWxEZXNjcmlwdGlvbigpCit7Cisg
ICAgaWYgKCFtX3dlYkhhbmRsZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1f
d2ViSGFuZGxlci0+bG9jYWxEZXNjcmlwdGlvbigpOworfQorCitQYXNzUmVmUHRyPFNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OnJl
bW90ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBpZiAoIW1fd2ViSGFuZGxlcikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5yZW1vdGVEZXNjcmlwdGlvbigpOwor
fQorCitib29sIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6OnN0YXJ0SWNlKFBhc3NS
ZWZQdHI8SWNlT3B0aW9ucz4gaWNlT3B0aW9ucykKK3sKKyAgICBpZiAoIW1fd2ViSGFuZGxlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+c3RhcnRJ
Y2UoaWNlT3B0aW9ucyk7Cit9CisKK2Jvb2wgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5h
bDo6cHJvY2Vzc0ljZU1lc3NhZ2UoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBp
Y2VDYW5kaWRhdGUpCit7CisgICAgaWYgKCFtX3dlYkhhbmRsZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnByb2Nlc3NJY2VNZXNzYWdlKGljZUNh
bmRpZGF0ZSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6YWRk
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBtZWRpYVN0cmVhbSkKK3sK
KyAgICBpZiAoIW1fd2ViSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJIYW5k
bGVyLT5hZGRTdHJlYW0obWVkaWFTdHJlYW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDBI
YW5kbGVySW50ZXJuYWw6OnJlbW92ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4gbWVkaWFTdHJlYW0pCit7CisgICAgaWYgKCFtX3dlYkhhbmRsZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fd2ViSGFuZGxlci0+cmVtb3ZlU3RyZWFtKG1lZGlhU3RyZWFtKTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsOjpzdG9wKCkKK3sKKyAgICBp
ZiAoIW1fd2ViSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJIYW5kbGVyLT5z
dG9wKCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6ZGlkR2Vu
ZXJhdGVJQ0VDYW5kaWRhdGUoY29uc3QgV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9y
JiBpY2VDYW5kaWRhdGUsIGJvb2wgbW9yZVRvRm9sbG93KQoreworICAgIG1fY2xpZW50LT5kaWRH
ZW5lcmF0ZUljZUNhbmRpZGF0ZShpY2VDYW5kaWRhdGUsIG1vcmVUb0ZvbGxvdyk7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbDo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShS
ZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKHN0
YXRlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsOjpkaWRDaGFu
Z2VJQ0VTdGF0ZShJQ0VTdGF0ZSBzdGF0ZSkKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNl
U3RhdGUoc3RhdGUpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWw6
OmRpZEFkZFJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ciYgd2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKQoreworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1v
dGVTdHJlYW0od2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKTsKK30KKwordm9pZCBQZWVyQ29ubmVj
dGlvbjAwSGFuZGxlckludGVybmFsOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcikKK3sK
KyAgICBtX2NsaWVudC0+ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9Q
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2JyaWRnZS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRh
ODQ0YmNlNTZhODBkNTBjNThlYzg2MTY5ZGYzMGZhYWE3M2VmZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVySW50
ZXJuYWwuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
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
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcklu
dGVybmFsX2gKKyNkZWZpbmUgUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJJbnRlcm5hbF9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOworY2xhc3MgV2ViUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXI7CitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJTdHJp
bmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvcjsKK2NsYXNzIEljZU9wdGlvbnM7CitjbGFzcyBNZWRpYUhpbnRzOworY2xhc3MgUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXJDbGllbnQ7CitjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOworCitjbGFzcyBQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsIDogcHVibGljIFdl
YktpdDo6V2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIFBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVySW50ZXJuYWwoUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGll
bnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYgdXNl
cm5hbWUpOworICAgIH5QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckludGVybmFsKCk7CisKKyAgICBQ
YXNzUmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IGNyZWF0ZU9mZmVyKFBhc3NS
ZWZQdHI8TWVkaWFIaW50cz4pOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcj4gY3JlYXRlQW5zd2VyKGNvbnN0IFN0cmluZyYgb2ZmZXIsIFBhc3NSZWZQdHI8TWVk
aWFIaW50cz4pOworICAgIGJvb2wgc2V0TG9jYWxEZXNjcmlwdGlvbihpbnQgYWN0aW9uLCBQYXNz
UmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KTsKKyAgICBib29sIHNldFJlbW90
ZURlc2NyaXB0aW9uKGludCBhY3Rpb24sIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcj4pOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4g
bG9jYWxEZXNjcmlwdGlvbigpOworICAgIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcj4gcmVtb3RlRGVzY3JpcHRpb24oKTsKKyAgICBib29sIHN0YXJ0SWNlKFBhc3NSZWZQ
dHI8SWNlT3B0aW9ucz4pOworICAgIGJvb2wgcHJvY2Vzc0ljZU1lc3NhZ2UoUGFzc1JlZlB0cjxJ
Y2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7CisgICAgdm9pZCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOworICAgIHZvaWQgc3RvcCgpOworCisgICAgLy8gV2Vi
S2l0OjpXZWJKU0VQUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZUlDRUNhbmRpZGF0ZShjb25zdCBXZWJLaXQ6Oldl
YklDRUNhbmRpZGF0ZURlc2NyaXB0b3ImLCBib29sIG1vcmVUb0ZvbGxvdyk7CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUlDRVN0YXRlKElDRVN0YXRlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVt
b3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJik7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvciYpOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJLaXQ6OldlYlBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVyPiBtX3dlYkhhbmRsZXI7CisgICAgUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFBlZXJDb25uZWN0
aW9uMDBIYW5kbGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA1
YjhmOTkxMjZhNTMzYzgzYjNlMmI2MTk3ODNiMDU5ODE0NzQwZDFjLi4yZWZhMzUzMTA1NTg1ODBm
MTgzNDBiNDc4Y2IwNjljMWJmYjExMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApA
QCAtNjAsNiArNjAsOCBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVV0aWxp
dGllczsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGlu
IHBsYXRmb3JtPwogY2xhc3MgV2ViSURCS2V5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBp
biBwbGF0Zm9ybT8KK2NsYXNzIFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyOworY2xhc3MgV2Vi
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRl
cjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBv
cnRDaGFubmVsOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KQEAgLTQw
OCw2ICs0MTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgV2ViUlRD
IGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2YgcmVzb3VyY2VzLgogICAg
IHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBjcmVhdGVQZWVyQ29ubmVjdGlvbkhh
bmRsZXIoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIqIGNyZWF0ZVBlZXJDb25uZWN0aW9u
MDBIYW5kbGVyKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50KikgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIGNyZWF0ZU1lZGlhU3RyZWFtQ2Vu
dGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFN0YXJ0V29ya2VyUnVuTG9vcChjb25zdCBXZWJXb3JrZXJSdW5Mb29wJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTk1
NWYyNDY0Mjc1NmMwMTk4NWRlZGFiOThkZjUzMDQ5NGRkOWMyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQZWVyQ29ubmVjdGlvbjAwSGFu
ZGxlcl9oCisjZGVmaW5lIFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyX2gKKworI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjsKK2NsYXNzIFdlYklDRU9wdGlv
bnM7CitjbGFzcyBXZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudDsKK2NsYXNzIFdlYk1l
ZGlhSGludHM7CitjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOworCitjbGFzcyBXZWJQZWVyQ29ubmVjdGlvbjAwSGFu
ZGxlciB7CitwdWJsaWM6CisgICAgZW51bSBBY3Rpb24geworICAgICAgICBBY3Rpb25TRFBPZmZl
ciA9IDB4MTAwLAorICAgICAgICBBY3Rpb25TRFBQUmFuc3dlciA9IDB4MjAwLAorICAgICAgICBB
Y3Rpb25TRFBBbnN3ZXIgPSAweDMwMAorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJQZWVyQ29u
bmVjdGlvbjAwSGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29u
c3QgV2ViU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBXZWJTdHJpbmcmIHVzZXJu
YW1lKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3Ig
Y3JlYXRlT2ZmZXIoY29uc3QgV2ViTWVkaWFIaW50cyYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlNl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IgY3JlYXRlQW5zd2VyKGNvbnN0IFdlYlN0cmluZyYg
b2ZmZXIsIGNvbnN0IFdlYk1lZGlhSGludHMmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNldExv
Y2FsRGVzY3JpcHRpb24oQWN0aW9uLCBjb25zdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRSZW1vdGVEZXNjcmlwdGlvbihBY3Rpb24s
IGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImKSA9IDA7CisgICAgdmlydHVh
bCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yIGxvY2FsRGVzY3JpcHRpb24oKSA9IDA7
CisgICAgdmlydHVhbCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yIHJlbW90ZURlc2Ny
aXB0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdGFydEljZShjb25zdCBXZWJJQ0VPcHRp
b25zJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzSWNlTWVzc2FnZShjb25zdCBXZWJJ
Q0VDYW5kaWRhdGVEZXNjcmlwdG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0o
Y29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5k
bGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YWE3MDgxMDFlNmQ5
OTZlNGVlZmU5YzU5OTg5Yzg0MWUwMDQwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNs
aWVudC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50X2gKKyNkZWZpbmUgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnRfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I7CitjbGFz
cyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdl
YlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFJlYWR5
U3RhdGUgeworICAgICAgICBSZWFkeVN0YXRlTmV3ID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU5l
Z290aWF0aW5nID0gMSwKKyAgICAgICAgUmVhZHlTdGF0ZUFjdGl2ZSA9IDIsCisgICAgICAgIFJl
YWR5U3RhdGVDbG9zZWQgPSAzCisgICAgfTsKKworICAgIGVudW0gSUNFU3RhdGUgeworICAgICAg
ICBJQ0VTdGF0ZUdhdGhlcmluZyA9IDB4MTAwLAorICAgICAgICBJQ0VTdGF0ZVdhaXRpbmcgPSAw
eDIwMCwKKyAgICAgICAgSUNFU3RhdGVDaGVja2luZyA9IDB4MzAwLAorICAgICAgICBJQ0VTdGF0
ZUNvbm5lY3RlZCA9IDB4NDAwLAorICAgICAgICBJQ0VTdGF0ZUNvbXBsZXRlZCA9IDB4NTAwLAor
ICAgICAgICBJQ0VTdGF0ZUZhaWxlZCA9IDB4NjAwLAorICAgICAgICBJQ0VTdGF0ZUNsb3NlZCA9
IDB4NzAwCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJhdGVJQ0VDYW5kaWRhdGUo
Y29uc3QgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYsIGJvb2wgbW9yZVRvRm9sbG93KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJQ0VTdGF0ZShJQ0VTdGF0ZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3Qg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmlu
ZGV4IGI1MTk2NzRiZGVlMGRiODA0ZTU5NmYxMDQ3NmM2ZGVjZjNkYTAyNmEuLjM4YzgwYjkyMzVi
ODE2ODJkZWUzZjViNjE2ZjFiY2EwOWVkM2U5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCisjaW5jbHVkZSAiUGVlckNv
bm5lY3Rpb24wMC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ3Vyc29yLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTAzLDYgKzEwNCw4IEBA
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYklDRU9wdGlvbnMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KIApAQCAtNTA5LDYgKzUxMiwyMyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8sIE1lZGlhU3RyZWFtU291cmNlOgogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJQ0VPcHRpb25zOjpDYW5kaWRhdGVUeXBlQWxsLCBJ
Y2VPcHRpb25zOjpBTEwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJQ0VPcHRp
b25zOjpDYW5kaWRhdGVUeXBlTm9SZWxheSwgSWNlT3B0aW9uczo6Tk9fUkVMQVkpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJQ0VPcHRpb25zOjpDYW5kaWRhdGVUeXBlT25seVJl
bGF5LCBJY2VPcHRpb25zOjpPTkxZX1JFTEFZKTsKKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlcjo6QWN0aW9uU0RQT2ZmZXIsIFBlZXJDb25u
ZWN0aW9uMDA6OlNEUF9PRkZFUik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBl
ZXJDb25uZWN0aW9uMDBIYW5kbGVyOjpBY3Rpb25TRFBQUmFuc3dlciwgUGVlckNvbm5lY3Rpb24w
MDo6U0RQX1BSQU5TV0VSKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXI6OkFjdGlvblNEUEFuc3dlciwgUGVlckNvbm5lY3Rpb24wMDo6U0RQ
X0FOU1dFUik7CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUGVlckNvbm5lY3Rp
b24wMEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVOZXcsIFBlZXJDb25uZWN0aW9uMDA6Ok5FVyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50OjpSZWFkeVN0YXRlTmVnb3RpYXRpbmcsIFBlZXJDb25uZWN0aW9uMDA6Ok5FR09USUFU
SU5HKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUGVlckNvbm5lY3Rpb24wMEhh
bmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVBY3RpdmUsIFBlZXJDb25uZWN0aW9uMDA6OkFDVElWRSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50OjpSZWFkeVN0YXRlQ2xvc2VkLCBQZWVyQ29ubmVjdGlvbjAwOjpDTE9TRUQpOworCitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xp
ZW50OjpJQ0VTdGF0ZUdhdGhlcmluZywgUGVlckNvbm5lY3Rpb24wMDo6SUNFX0dBVEhFUklORyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50OjpJQ0VTdGF0ZVdhaXRpbmcsIFBlZXJDb25uZWN0aW9uMDA6OklDRV9XQUlUSU5HKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJD
bGllbnQ6OklDRVN0YXRlQ2hlY2tpbmcsIFBlZXJDb25uZWN0aW9uMDA6OklDRV9DSEVDS0lORyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVy
Q2xpZW50OjpJQ0VTdGF0ZUNvbm5lY3RlZCwgUGVlckNvbm5lY3Rpb24wMDo6SUNFX0NPTk5FQ1RF
RCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5k
bGVyQ2xpZW50OjpJQ0VTdGF0ZUNvbXBsZXRlZCwgUGVlckNvbm5lY3Rpb24wMDo6SUNFX0NPTVBM
RVRFRCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBI
YW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZUZhaWxlZCwgUGVlckNvbm5lY3Rpb24wMDo6SUNFX0ZBSUxF
RCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBlZXJDb25uZWN0aW9uMDBIYW5k
bGVyQ2xpZW50OjpJQ0VTdGF0ZUNsb3NlZCwgUGVlckNvbm5lY3Rpb24wMDo6SUNFX0NMT1NFRCk7
CiAjZW5kaWYKIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSZWZlcnJlclBvbGlj
eUFsd2F5cywgU2VjdXJpdHlQb2xpY3k6OlJlZmVycmVyUG9saWN5QWx3YXlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>