<?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>147319</bug_id>
          
          <creation_ts>2015-07-27 04:23:21 -0700</creation_ts>
          <short_desc>[GTK] Add API to WebKitWebsiteDataManager to handle session and local storage</short_desc>
          <delta_ts>2017-01-21 01:58:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>146589</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>146589</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112395</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-27 04:23:21 -0700</bug_when>
    <thetext>Add API to WebKitWebsiteDataManager to handle session and local storage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112397</commentid>
    <comment_count>1</comment_count>
      <attachid>257557</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-27 04:26:27 -0700</bug_when>
    <thetext>Created attachment 257557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112627</commentid>
    <comment_count>2</comment_count>
      <attachid>257557</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-27 17:35:05 -0700</bug_when>
    <thetext>Comment on attachment 257557
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:824
&gt; +                origins = g_list_prepend(origins, webkitSecurityOriginCreate(origin.get()));

Same question as on your other patch: I guess the same origin is guaranteed to not exist in multiple WebsiteDataRecords returned by this query?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:836
&gt; + * @error: return location for error or %NULL to ignore

Again, same question as on your other patch: the GError is not supposed to have any annotations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112700</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-28 03:43:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 257557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257557&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:824
&gt; &gt; +                origins = g_list_prepend(origins, webkitSecurityOriginCreate(origin.get()));
&gt; 
&gt; Same question as on your other patch: I guess the same origin is guaranteed
&gt; to not exist in multiple WebsiteDataRecords returned by this query?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:836
&gt; &gt; + * @error: return location for error or %NULL to ignore
&gt; 
&gt; Again, same question as on your other patch: the GError is not supposed to
&gt; have any annotations?

I think this is automatically handled by g-i, the method is marked as throws=&quot;1&quot; in the gir file and the parameter is simply removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268741</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-21 01:58:13 -0800</bug_when>
    <thetext>Closing this, with the new approach I&apos;m going to use a single patch.

*** This bug has been marked as a duplicate of bug 146589 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257557</attachid>
            <date>2015-07-27 04:26:27 -0700</date>
            <delta_ts>2017-01-21 01:58:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-website-data-storage.diff</filename>
            <type>text/plain</type>
            <size>43862</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxODhkMDU4Li5mOGQyYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTUtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRv
IGhhbmRsZSBzZXNzaW9uIGFuZCBsb2NhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczMTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X29yaWdpbnNfd2l0aF9zZXNzaW9uX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9vcmlnaW5zX3dpdGhfc2Vzc2lvbl9zdG9yYWdlX2ZpbmlzaCk6
CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX3Nlc3Npb25fc3Rv
cmFnZV9mb3Jfb3JpZ2lucyk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
ZGVsZXRlX3Nlc3Npb25fc3RvcmFnZV9mb3Jfb3JpZ2luc19maW5pc2gpOgorICAgICAgICAod2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZSk6CisgICAgICAg
ICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfc2Vzc2lvbl9zdG9yYWdlX2Zpbmlz
aCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0
aF9sb2NhbF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfb3JpZ2luc193aXRoX2xvY2FsX3N0b3JhZ2VfZmluaXNoKToKKyAgICAgICAgKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfbG9jYWxfc3RvcmFnZV9mb3Jfb3JpZ2lucyk6Cisg
ICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX2xvY2FsX3N0b3JhZ2Vf
Zm9yX29yaWdpbnNfZmluaXNoKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9jbGVhcl9sb2NhbF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9jbGVhcl9sb2NhbF9zdG9yYWdlX2ZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisKIDIwMTUtMDctMDMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IEFkZCBBUEkgdG8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIGhhbmRsZSBjYWNoZWQgZGF0
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggNmJjZTA1Ni4uYTE4NzY3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC03OTcsMyArNzk3LDMwNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfZGlza19jYWNoZV9maW5pc2goV2ViS2l0V2Vi
c2l0ZURhdGFNYQogCiAgICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0so
cmVzdWx0KSwgZXJyb3IpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfb3JpZ2luc193aXRoX3Nlc3Npb25fc3RvcmFnZToKKyAqIEBtYW5hZ2VyOiBhICNXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNH
Q2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3lu
Yyk6IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNh
dGlzZmllZAorICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNh
bGxiYWNrIGZ1bmN0aW9uCisgKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBsaXN0IG9mIG9y
aWdpbnMgaW4gc2Vzc2lvbiBzdG9yYWdlLgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBm
aW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRoZW4gY2FsbAorICog
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9zZXNzaW9uX3N0b3JhZ2Vfb3JpZ2lucygp
IHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKgorICogU2luY2U6IDIuMTAK
KyAqLwordm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9z
ZXNzaW9uX3N0b3JhZ2UoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyLCBHQ2FuY2Vs
bGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRl
ciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RB
VEFfTUFOQUdFUihtYW5hZ2VyKSk7CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcobWFuYWdlciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkp
OworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YShXZWJzaXRl
RGF0YVR5cGVTZXNzaW9uU3RvcmFnZSwgW3Rhc2tdIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+
IHJlY29yZHMpIHsKKyAgICAgICAgR0xpc3QqIG9yaWdpbnMgPSBudWxscHRyOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpIHsKKyAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgb3JpZ2luIDogcmVjb3JkLm9yaWdpbnMpCisgICAgICAgICAgICAgICAgb3JpZ2lu
cyA9IGdfbGlzdF9wcmVwZW5kKG9yaWdpbnMsIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKG9y
aWdpbi5nZXQoKSkpOworICAgICAgICB9CisgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0
YXNrLmdldCgpLCBvcmlnaW5zLCBbXShncG9pbnRlciBkYXRhKSB7CisgICAgICAgICAgICBnX2xp
c3RfZnJlZV9mdWxsKHN0YXRpY19jYXN0PEdMaXN0Kj4oZGF0YSksIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9vcmlnaW5zX3dpdGhfc2Vzc2lvbl9zdG9yYWdlX2ZpbmlzaDoKKyAqIEBtYW5hZ2VyOiBhICNX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3VsdAorICog
QGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9yZQorICoK
KyAqIEZpbmlzaCBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9zZXNzaW9uX3N0b3JhZ2UoKS4K
KyAqCisgKiBSZXR1cm5zOiAoZWxlbWVudC10eXBlIFdlYktpdFNlY3VyaXR5T3JpZ2luKSAodHJh
bnNmZXIgZnVsbCk6IGEgI0dMaXN0IG9mICNXZWJLaXRTZWN1cml0eU9yaWdpbjwhLS0gLS0+cy4g
WW91IG11c3QgZnJlZSB0aGUgI0dMaXN0IHdpdGgKKyAqICAgIGdfbGlzdF9mcmVlKCkgYW5kIHVu
cmVmIHRoZSAjV2ViS2l0U2VjdXJpdHlPcmlnaW48IS0tIC0tPnMgd2l0aCB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3VucmVmKCkgd2hlbiB5b3UncmUgZG9uZSB3aXRoIHRoZW0uCisgKgorICogU2lu
Y2U6IDIuMTAKKyAqLworR0xpc3QqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3Jp
Z2luc193aXRoX3Nlc3Npb25fc3RvcmFnZV9maW5pc2goV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiBtYW5hZ2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFn
ZXIpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQo
cmVzdWx0LCBtYW5hZ2VyKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xp
c3QqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIoR19UQVNLKHJlc3VsdCksIGVycm9yKSk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9zZXNzaW9uX3N0
b3JhZ2VfZm9yX29yaWdpbnM6CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyCisgKiBAb3JpZ2luczogKGVsZW1lbnQtdHlwZSBXZWJLaXRTZWN1cml0eU9yaWdpbik6IGEg
I0dMaXN0IG9mICNXZWJLaXRTZWN1cml0eU9yaWdpbjwhLS0gLS0+cworICogQGNhbmNlbGxhYmxl
OiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUKKyAqIEBj
YWxsYmFjazogKHNjb3BlIGFzeW5jKTogYSAjR0FzeW5jUmVhZHlDYWxsYmFjayB0byBjYWxsIHdo
ZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkCisgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRo
ZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rpb24KKyAqCisgKiBBc3luY2hyb25vdXNs
eSBkZWxldGUgdGhlIHNlc3Npb24gc3RvcmFnZSBmb3IgdGhlIGdpdmVuIEBvcmlnaW5zLgorICog
VXNlIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9zZXNzaW9uX3N0b3JhZ2UoKSBp
ZiB5b3Ugd2FudCB0byBkZWxldGUgdGhlCisgKiBzZXNzaW9uIHN0b3JhZ2UgZm9yIGFsbCBvcmln
aW5zLgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRoZW4gY2FsbAorICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2RlbGV0ZV9zZXNzaW9uX3N0b3JhZ2VfZm9yX29yaWdpbnNfZmluaXNoKCkgdG8gZ2V0
IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2
b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zv
cl9vcmlnaW5zKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciwgR0xpc3QqIG9yaWdp
bnMsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJh
Y2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG9y
aWdpbnMpOworCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzOworICAgIGZv
ciAoR0xpc3QqIGxpc3QgPSBvcmlnaW5zOyBsaXN0OyBsaXN0ID0gZ19saXN0X25leHQobGlzdCkp
IHsKKyAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHN0YXRpY19jYXN0PFdl
YktpdFNlY3VyaXR5T3JpZ2luKj4obGlzdC0+ZGF0YSk7CisgICAgICAgIFdlYnNpdGVEYXRhUmVj
b3JkIHJlY29yZDsKKyAgICAgICAgcmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGVTZXNzaW9uU3Rv
cmFnZSwgJndlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7Cisg
ICAgICAgIHJlY29yZHMuYXBwZW5kKHJlY29yZCk7CisgICAgfQorCisgICAgR1JlZlB0cjxHVGFz
az4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxs
YmFjaywgdXNlckRhdGEpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5y
ZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZVNlc3Npb25TdG9yYWdlLCByZWNvcmRzLCBbdGFza10g
eworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CisgICAg
fSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9zZXNz
aW9uX3N0b3JhZ2VfZm9yX29yaWdpbnNfZmluaXNoOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlcgorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6
IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmlu
aXNoIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9vcmlnaW5zKCkuCisgKgor
ICogUmV0dXJuczogJVRSVUUgaWYgc2Vzc2lvbiBzdG9yYWdlIHdhcyBzdWNjZXNmdWxseSBkZWxl
dGVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK2dib29s
ZWFuIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zv
cl9vcmlnaW5zX2ZpbmlzaChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIEZBTFNFKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCBtYW5hZ2VyKSwg
RkFMU0UpOworCisgICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVz
dWx0KSwgZXJyb3IpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9j
bGVhcl9zZXNzaW9uX3N0b3JhZ2UKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIKKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2FuY2VsbGFibGUgb3Ig
JU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3luY1Jl
YWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZAorICogQHVz
ZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9u
CisgKgorICogQXN5bmNocm9ub3VzbHkgY2xlYXIgdGhlIHNlc3Npb24gc3RvcmFnZS4KKyAqCisg
KiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4gWW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVh
cl9zZXNzaW9uX3N0b3JhZ2VfZmluaXNoKCkgdG8gZ2V0IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJh
dGlvbi4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9jbGVhcl9zZXNzaW9uX3N0b3JhZ2UoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBt
YW5hZ2VyLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNh
bGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisKKyAgICBHUmVmUHRyPEdUYXNr
PiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcobWFuYWdlciwgY2FuY2VsbGFibGUsIGNhbGxi
YWNrLCB1c2VyRGF0YSkpOworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJl
bW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlU2Vzc2lvblN0b3JhZ2UsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpLCBbdGFza10geworICAgICAgICBnX3Rhc2tfcmV0
dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CisgICAgfSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZV9maW5pc2g6Cisg
KiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisgKiBAcmVzdWx0OiBhICNH
QXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJuIGxvY2F0aW9uIGZvciBlcnJvciBvciAlTlVM
TCB0byBpZ25vcmUKKyAqCisgKiBGaW5pc2ggYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFy
dGVkIHdpdGggd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFn
ZSgpCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgc2Vzc2lvbiBzdG9yYWdlIHdhcyBzdWNjZXNm
dWxseSBjbGVhcmVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjEwCisg
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9zZXNzaW9uX3N0
b3JhZ2VfZmluaXNoKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIG1hbmFnZXIpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gZ190YXNrX3Byb3BhZ2F0ZV9ib29sZWFuKEdfVEFTSyhyZXN1bHQp
LCBlcnJvcik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9v
cmlnaW5zX3dpdGhfbG9jYWxfc3RvcmFnZToKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIKKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2FuY2VsbGFi
bGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dB
c3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZAor
ICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUgZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1
bmN0aW9uCisgKgorICogQXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBsaXN0IG9mIG9yaWdpbnMgaW4g
bG9jYWwgc3RvcmFnZS4KKyAqCisgKiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBj
YWxsYmFjayB3aWxsIGJlIGNhbGxlZC4gWW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9vcmlnaW5zKCkgdG8gZ2V0IHRoZSBy
ZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX2xvY2FsX3N0b3JhZ2Uo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5h
Z2VyKSk7CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXco
bWFuYWdlciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVMb2NhbFN0
b3JhZ2UsIFt0YXNrXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzKSB7CisgICAg
ICAgIEdMaXN0KiBvcmlnaW5zID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBy
ZWNvcmQgOiByZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6
IHJlY29yZC5vcmlnaW5zKQorICAgICAgICAgICAgICAgIG9yaWdpbnMgPSBnX2xpc3RfcHJlcGVu
ZChvcmlnaW5zLCB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShvcmlnaW4uZ2V0KCkpKTsKKyAg
ICAgICAgfQorICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgb3JpZ2lu
cywgW10oZ3BvaW50ZXIgZGF0YSkgeworICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbChzdGF0
aWNfY2FzdDxHTGlzdCo+KGRhdGEpLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX2xv
Y2FsX3N0b3JhZ2VfZmluaXNoOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlcgorICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2Nh
dGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoIGFuIGFzeW5j
aHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfb3JpZ2luc193aXRoX2xvY2FsX3N0b3JhZ2UoKS4KKyAqCisgKiBSZXR1cm5zOiAoZWxl
bWVudC10eXBlIFdlYktpdFNlY3VyaXR5T3JpZ2luKSAodHJhbnNmZXIgZnVsbCk6IGEgI0dMaXN0
IG9mICNXZWJLaXRTZWN1cml0eU9yaWdpbjwhLS0gLS0+cy4gWW91IG11c3QgZnJlZSB0aGUgI0dM
aXN0IHdpdGgKKyAqICAgIGdfbGlzdF9mcmVlKCkgYW5kIHVucmVmIHRoZSAjV2ViS2l0U2VjdXJp
dHlPcmlnaW48IS0tIC0tPnMgd2l0aCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKCkgd2hl
biB5b3UncmUgZG9uZSB3aXRoIHRoZW0uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworR0xpc3Qq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX2xvY2FsX3N0b3Jh
Z2VfZmluaXNoKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0cik7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwgbWFuYWdlciksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaXN0Kj4oZ190YXNrX3Byb3BhZ2F0ZV9w
b2ludGVyKEdfVEFTSyhyZXN1bHQpLCBlcnJvcikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfbG9jYWxfc3RvcmFnZV9mb3Jfb3JpZ2luczoKKyAqIEBt
YW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqIEBvcmlnaW5zOiAoZWxlbWVu
dC10eXBlIFdlYktpdFNlY3VyaXR5T3JpZ2luKTogYSAjR0xpc3Qgb2YgI1dlYktpdFNlY3VyaXR5
T3JpZ2luPCEtLSAtLT5zCisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNl
bGxhYmxlIG9yICVOVUxMIHRvIGlnbm9yZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBh
ICNHQXN5bmNSZWFkeUNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgcmVxdWVzdCBpcyBzYXRpc2Zp
ZWQKKyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdGhlIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFj
ayBmdW5jdGlvbgorICoKKyAqIEFzeW5jaHJvbm91c2x5IGRlbGV0ZSB0aGUgbG9jYWwgc3RvcmFn
ZSBmb3IgdGhlIGdpdmVuIEBvcmlnaW5zLgorICogVXNlIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9jbGVhcl9sb2NhbF9zdG9yYWdlKCkgaWYgeW91IHdhbnQgdG8gZGVsZXRlIHRoZQorICog
bG9jYWwgc3RvcmFnZSBmb3IgYWxsIG9yaWdpbnMuCisgKgorICogV2hlbiB0aGUgb3BlcmF0aW9u
IGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxs
CisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX2xvY2FsX3N0b3JhZ2VfZm9y
X29yaWdpbnNfZmluaXNoKCkgdG8gZ2V0IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KKyAq
CisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9k
ZWxldGVfbG9jYWxfc3RvcmFnZV9mb3Jfb3JpZ2lucyhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
IG1hbmFnZXIsIEdMaXN0KiBvcmlnaW5zLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5
bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW5zKTsKKworICAgIFZlY3RvcjxXZWJzaXRlRGF0YVJl
Y29yZD4gcmVjb3JkczsKKyAgICBmb3IgKEdMaXN0KiBsaXN0ID0gb3JpZ2luczsgbGlzdDsgbGlz
dCA9IGdfbGlzdF9uZXh0KGxpc3QpKSB7CisgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KGxpc3QtPmRhdGEpOwor
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCByZWNvcmQ7CisgICAgICAgIHJlY29yZC5hZGQoV2Vi
c2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlLCAmd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0
eU9yaWdpbihvcmlnaW4pKTsKKyAgICAgICAgcmVjb3Jkcy5hcHBlbmQocmVjb3JkKTsKKyAgICB9
CisKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcobWFuYWdl
ciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOworICAgIG1hbmFnZXItPnByaXYt
PndlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdl
LCByZWNvcmRzLCBbdGFza10geworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5n
ZXQoKSwgVFJVRSk7CisgICAgfSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2RlbGV0ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zX2ZpbmlzaDoKKyAqIEBtYW5h
Z2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jl
c3VsdAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGln
bm9yZQorICoKKyAqIEZpbmlzaCBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0
aCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX2xvY2FsX3N0b3JhZ2VfZm9yX29y
aWdpbnMoKS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBsb2NhbCBzdG9yYWdlIHdhcyBzdWNj
ZXNmdWxseSBkZWxldGVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjEw
CisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfbG9jYWxf
c3RvcmFnZV9mb3Jfb3JpZ2luc19maW5pc2goV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBG
QUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwg
bWFuYWdlciksIEZBTFNFKTsKKworICAgIHJldHVybiBnX3Rhc2tfcHJvcGFnYXRlX2Jvb2xlYW4o
R19UQVNLKHJlc3VsdCksIGVycm9yKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZQorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcgorICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxs
YWJsZSBvciAlTlVMTCB0byBpZ25vcmUKKyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogYSAj
R0FzeW5jUmVhZHlDYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVk
CisgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sg
ZnVuY3Rpb24KKyAqCisgKiBBc3luY2hyb25vdXNseSBjbGVhciB0aGUgbG9jYWwgc3RvcmFnZS4K
KyAqCisgKiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJl
IGNhbGxlZC4gWW91IGNhbiB0aGVuIGNhbGwKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9jbGVhcl9sb2NhbF9zdG9yYWdlX2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBv
cGVyYXRpb24uCisgKgorICogU2luY2U6IDIuMTAKKyAqLwordm9pZCB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
IG1hbmFnZXIsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sg
Y2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKworICAgIEdSZWZQdHI8R1Rh
c2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKSk7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+
cmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpLCBbdGFza10geworICAgICAgICBnX3Rhc2tfcmV0
dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CisgICAgfSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2xvY2FsX3N0b3JhZ2VfZmluaXNoOgorICog
QG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgorICogQHJlc3VsdDogYSAjR0Fz
eW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwg
dG8gaWdub3JlCisgKgorICogRmluaXNoIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRl
ZCB3aXRoIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9sb2NhbF9zdG9yYWdlKCkK
KyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBsb2NhbCBzdG9yYWdlIHdhcyBzdWNjZXNmdWxseSBj
bGVhcmVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK2di
b29sZWFuIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9sb2NhbF9zdG9yYWdlX2Zp
bmlzaChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIEZBTFNFKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCBtYW5hZ2VyKSwgRkFMU0UpOworCisg
ICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVzdWx0KSwgZXJyb3Ip
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAppbmRleCA1YTRlZGU4Li5iMDI2Zjg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuaApAQCAtMTQ3LDYgKzE0Nyw3MSBAQCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfY2xlYXJfZGlza19jYWNoZV9maW5pc2ggICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgKnJlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vcmlnaW5zX3dpdGhfc2Vz
c2lvbl9zdG9yYWdlICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgY2FsbGJhY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQ
SSBHTGlzdCAqCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9z
ZXNzaW9uX3N0b3JhZ2VfZmluaXNoICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICpyZXN1bHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICoqZXJyb3IpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdl
X2Zvcl9vcmlnaW5zICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGlzdCAgICAgICAgICAgICAgICAgICAgKm9yaWdpbnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
b2ludGVyICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4K
K3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9v
cmlnaW5zX2ZpbmlzaCAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0Vycm9yICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZSAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2lu
dGVyICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZV9maW5pc2gg
ICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9sb2NhbF9zdG9yYWdlICAg
ICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50
ZXIgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIEdMaXN0ICoKK3dl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX2xvY2FsX3N0b3JhZ2Vf
ZmluaXNoICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vy
cm9yICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zICAg
ICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaXN0ICAgICAgICAgICAgICAgICAgICAqb3JpZ2lucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNl
bGxhYmxlICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVh
ZHlDYWxsYmFjayAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAg
ICAgICAgICAgICB1c2VyX2RhdGEpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zX2ZpbmlzaCAg
IChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu
Y1Jlc3VsdCAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAg
ICAgICAgICAgICAqKmVycm9yKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxh
YmxlICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlD
YWxsYmFjayAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAg
ICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZV9maW5pc2ggICAgICAgICAgICAgICAg
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVzdWx0ICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAg
ICAgICAgICAgICoqZXJyb3IpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CmluZGV4IGVmYTU5M2IuLjk5MzI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CkBAIC0xMjEyLDYgKzEyMTIsMTggQEAgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2RlbGV0ZV9kaXNrX2NhY2hlX2Zvcl9vcmlnaW5zCiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZGVsZXRlX2Rpc2tfY2FjaGVfZm9yX29yaWdpbnNfZmluaXNoCiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfZGlza19jYWNoZQogd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2NsZWFyX2Rpc2tfY2FjaGVfZmluaXNoCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9zZXNzaW9uX3N0b3JhZ2UKK3dlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX3Nlc3Npb25fc3RvcmFnZV9maW5pc2gKK3dlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9vcmlnaW5z
Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX3Nlc3Npb25fc3RvcmFnZV9mb3Jf
b3JpZ2luc19maW5pc2gKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9zZXNzaW9u
X3N0b3JhZ2UKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9zZXNzaW9uX3N0b3Jh
Z2VfZmluaXNoCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9s
b2NhbF9zdG9yYWdlCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0
aF9sb2NhbF9zdG9yYWdlX2ZpbmlzaAord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0
ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
ZGVsZXRlX2xvY2FsX3N0b3JhZ2VfZm9yX29yaWdpbnNfZmluaXNoCit3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZQord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2NsZWFyX2xvY2FsX3N0b3JhZ2VfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgog
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOTU1YTViLi5mMzZiMjZhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MTUtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIGhhbmRs
ZSBzZXNzaW9uIGFuZCBsb2NhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2Vzc2lvbi9sb2NhbCBzdG9yYWdl
IHRvIGFib3V0OmRhdGEgaW4gTWluaUJyb3dzZXIKKyAgICAgICAgYW5kIGEgbmV3IHRlc3QgY2Fz
ZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChhYm91dERh
dGFSZXF1ZXN0RnJlZSk6CisgICAgICAgIChzZXNzaW9uU3RvcmFnZU9yaWdpbnNEZWxldGVkQ2Fs
bGJhY2spOgorICAgICAgICAoc2Vzc2lvblN0b3JhZ2VDbGVhcmVkQ2FsbGJhY2spOgorICAgICAg
ICAobG9jYWxTdG9yYWdlT3JpZ2luc0RlbGV0ZWRDYWxsYmFjayk6CisgICAgICAgIChsb2NhbFN0
b3JhZ2VDbGVhcmVkQ2FsbGJhY2spOgorICAgICAgICAoYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJl
Y2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoYWJvdXREYXRhSGFuZGxlRmluaXNoUmVxdWVzdElm
Q29tcGxldGUpOgorICAgICAgICAoZ290U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAg
KGdvdExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoYWJvdXREYXRhSGFuZGxlUmVxdWVz
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYnNp
dGVEYXRhVGVzdDo6ZmV0Y2hPcmlnaW5zQ2FsbGJhY2spOgorICAgICAgICAoV2Vic2l0ZURhdGFU
ZXN0OjpmZXRjaE9yaWdpbnMpOgorICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpkZWxldGVPcmln
aW5zQ2FsbGJhY2spOgorICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpkZWxldGVPcmlnaW5zQW5k
V2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpkZWxldGVBbGxP
cmlnaW5zQ2FsbGJhY2spOgorICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpkZWxldGVBbGxPcmln
aW5zQW5kV2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAodGVzdFdlYkNvbnRleHRXZWJzaXRl
RGF0YVN0b3JhZ2UpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNS0wNy0wMyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IEFQSSB0byBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8gaGFuZGxlIGNhY2hlZCBkYXRhCmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYwppbmRleCBlYjMzNDAwLi5jMjQ2ODkxIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMK
QEAgLTIzNyw4ICsyMzcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QgKnJlcXVlc3Q7CiAgICAgR0xpc3QgKm1lbW9yeUNhY2hlT3JpZ2luczsKICAgICBH
TGlzdCAqZGlza0NhY2hlT3JpZ2luczsKKyAgICBHTGlzdCAqc2Vzc2lvblN0b3JhZ2VPcmlnaW5z
OworICAgIEdMaXN0ICpsb2NhbFN0b3JhZ2VPcmlnaW5zOwogICAgIGdib29sZWFuIGdvdE1lbW9y
eUNhY2hlT3JpZ2luczsKICAgICBnYm9vbGVhbiBnb3REaXNrQ2FjaGVPcmlnaW5zOworICAgIGdi
b29sZWFuIGdvdFNlc3Npb25TdG9yYWdlT3JpZ2luczsKKyAgICBnYm9vbGVhbiBnb3RMb2NhbFN0
b3JhZ2VPcmlnaW5zOwogfSBBYm91dERhdGFSZXF1ZXN0OwogCiBzdGF0aWMgR0hhc2hUYWJsZSAq
YWJvdXREYXRhUmVxdWVzdE1hcDsKQEAgLTI1MCw2ICsyNTQsOCBAQCBzdGF0aWMgdm9pZCBhYm91
dERhdGFSZXF1ZXN0RnJlZShBYm91dERhdGFSZXF1ZXN0ICpyZXF1ZXN0KQogCiAgICAgZ19saXN0
X2ZyZWVfZnVsbChyZXF1ZXN0LT5tZW1vcnlDYWNoZU9yaWdpbnMsIChHRGVzdHJveU5vdGlmeSl3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKTsKICAgICBnX2xpc3RfZnJlZV9mdWxsKHJlcXVl
c3QtPmRpc2tDYWNoZU9yaWdpbnMsIChHRGVzdHJveU5vdGlmeSl3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3VucmVmKTsKKyAgICBnX2xpc3RfZnJlZV9mdWxsKHJlcXVlc3QtPnNlc3Npb25TdG9yYWdl
T3JpZ2lucywgKEdEZXN0cm95Tm90aWZ5KXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpOwor
ICAgIGdfbGlzdF9mcmVlX2Z1bGwocmVxdWVzdC0+bG9jYWxTdG9yYWdlT3JpZ2lucywgKEdEZXN0
cm95Tm90aWZ5KXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYpOwogICAgIGlmIChyZXF1ZXN0
LT5yZXF1ZXN0KQogICAgICAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0LT5yZXF1ZXN0KTsKIApA
QCAtMjk3LDYgKzMwMywzMCBAQCBzdGF0aWMgdm9pZCBkaXNrQ2FjaGVDbGVhcmVkQ2FsbGJhY2so
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLCBHQXN5bmNSZQogICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfcmVsb2FkKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3
KHJlcXVlc3QtPnJlcXVlc3QpKTsKIH0KIAorc3RhdGljIHZvaWQgc2Vzc2lvblN0b3JhZ2VPcmln
aW5zRGVsZXRlZENhbGxiYWNrKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwgR0Fz
eW5jUmVzdWx0ICpyZXN1bHQsIEFib3V0RGF0YVJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgaWYg
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9v
cmlnaW5zX2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIE5VTEwpKQorICAgICAgICB3ZWJraXRfd2Vi
X3ZpZXdfcmVsb2FkKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KHJlcXVl
c3QtPnJlcXVlc3QpKTsKK30KKworc3RhdGljIHZvaWQgc2Vzc2lvblN0b3JhZ2VDbGVhcmVkQ2Fs
bGJhY2soV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLCBHQXN5bmNSZXN1bHQgKnJl
c3VsdCwgQWJvdXREYXRhUmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZV9maW5pc2gobWFuYWdlciwgcmVz
dWx0LCBOVUxMKSkKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZCh3ZWJraXRfdXJpX3Nj
aGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhyZXF1ZXN0LT5yZXF1ZXN0KSk7Cit9CisKK3N0YXRp
YyB2b2lkIGxvY2FsU3RvcmFnZU9yaWdpbnNEZWxldGVkQ2FsbGJhY2soV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyICptYW5hZ2VyLCBHQXN5bmNSZXN1bHQgKnJlc3VsdCwgQWJvdXREYXRhUmVxdWVz
dCAqcmVxdWVzdCkKK3sKKyAgICBpZiAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0
ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zX2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIE5VTEwp
KQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZ2V0X3dlYl92aWV3KHJlcXVlc3QtPnJlcXVlc3QpKTsKK30KKworc3RhdGljIHZvaWQgbG9j
YWxTdG9yYWdlQ2xlYXJlZENhbGxiYWNrKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdl
ciwgR0FzeW5jUmVzdWx0ICpyZXN1bHQsIEFib3V0RGF0YVJlcXVlc3QgKnJlcXVlc3QpCit7Cisg
ICAgaWYgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9sb2NhbF9zdG9yYWdlX2Zp
bmlzaChtYW5hZ2VyLCByZXN1bHQsIE5VTEwpKQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVs
b2FkKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KHJlcXVlc3QtPnJlcXVl
c3QpKTsKK30KKwogc3RhdGljIHZvaWQgYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2Fs
bGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIsIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQgKm1lc3NhZ2UpCiB7CiAgICAgSlNWYWx1ZVJlZiBqc1ZhbHVlID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShtZXNzYWdlKTsKQEAgLTMzMiw2ICsz
NjIsMTAgQEAgc3RhdGljIHZvaWQgYWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJh
Y2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2UKICAgICAgICAgICAgIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9tZW1vcnlfY2FjaGUobWFuYWdlciwgTlVMTCwgKEdBc3lu
Y1JlYWR5Q2FsbGJhY2spbWVtb3J5Q2FjaGVDbGVhcmVkQ2FsbGJhY2ssIHJlcXVlc3QpOwogICAg
ICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbCh0b2tlbnNbMF0sICJkaXNrIikpCiAgICAgICAgICAg
ICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfZGlza19jYWNoZShtYW5hZ2VyLCBO
VUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylkaXNrQ2FjaGVDbGVhcmVkQ2FsbGJhY2ssIHJlcXVl
c3QpOworICAgICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbCh0b2tlbnNbMF0sICJzZXNzaW9uLXN0
b3JhZ2UiKSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9z
ZXNzaW9uX3N0b3JhZ2UobWFuYWdlciwgTlVMTCwgKEdBc3luY1JlYWR5Q2FsbGJhY2spc2Vzc2lv
blN0b3JhZ2VDbGVhcmVkQ2FsbGJhY2ssIHJlcXVlc3QpOworICAgICAgICBlbHNlIGlmIChnX3N0
cl9lcXVhbCh0b2tlbnNbMF0sICJsb2NhbC1zdG9yYWdlIikpCisgICAgICAgICAgICB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfbG9jYWxfc3RvcmFnZShtYW5hZ2VyLCBOVUxMLCAo
R0FzeW5jUmVhZHlDYWxsYmFjaylsb2NhbFN0b3JhZ2VDbGVhcmVkQ2FsbGJhY2ssIHJlcXVlc3Qp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGd1aW50NjQgb3JpZ2luSUQgPSBnX2FzY2lpX3N0cnRv
dWxsKHRva2Vuc1syXSwgTlVMTCwgMTApOwogICAgICAgICBpZiAoZ19zdHJfZXF1YWwodG9rZW5z
WzBdLCAibWVtb3J5IikpIHsKQEAgLTM0Niw2ICszODAsMTggQEAgc3RhdGljIHZvaWQgYWJvdXRE
YXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
ICp1c2UKICAgICAgICAgICAgICAgICBHTGlzdCBvcmlnaW5zID0geyBvcmlnaW4sIE5VTEwsIE5V
TEwgfTsKICAgICAgICAgICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRl
X2Rpc2tfY2FjaGVfZm9yX29yaWdpbnMobWFuYWdlciwgJm9yaWdpbnMsIE5VTEwsIChHQXN5bmNS
ZWFkeUNhbGxiYWNrKWRpc2tDYWNoZU9yaWdpbnNEZWxldGVkQ2FsbGJhY2ssIHJlcXVlc3QpOwog
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHRva2Vuc1swXSwg
InNlc3Npb24tc3RvcmFnZSIpKSB7CisgICAgICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiAq
b3JpZ2luID0gZ19saXN0X250aF9kYXRhKHJlcXVlc3QtPnNlc3Npb25TdG9yYWdlT3JpZ2lucywg
b3JpZ2luSUQpOworICAgICAgICAgICAgaWYgKG9yaWdpbikgeworICAgICAgICAgICAgICAgIEdM
aXN0IG9yaWdpbnMgPSB7IG9yaWdpbiwgTlVMTCwgTlVMTCB9OworICAgICAgICAgICAgICAgIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9vcmln
aW5zKG1hbmFnZXIsICZvcmlnaW5zLCBOVUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylzZXNzaW9u
U3RvcmFnZU9yaWdpbnNEZWxldGVkQ2FsbGJhY2ssIHJlcXVlc3QpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHRva2Vuc1swXSwgImxvY2FsLXN0b3JhZ2Ui
KSkgeworICAgICAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IGdfbGlzdF9u
dGhfZGF0YShyZXF1ZXN0LT5sb2NhbFN0b3JhZ2VPcmlnaW5zLCBvcmlnaW5JRCk7CisgICAgICAg
ICAgICBpZiAob3JpZ2luKSB7CisgICAgICAgICAgICAgICAgR0xpc3Qgb3JpZ2lucyA9IHsgb3Jp
Z2luLCBOVUxMLCBOVUxMIH07CisgICAgICAgICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2RlbGV0ZV9sb2NhbF9zdG9yYWdlX2Zvcl9vcmlnaW5zKG1hbmFnZXIsICZvcmlnaW5z
LCBOVUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylsb2NhbFN0b3JhZ2VPcmlnaW5zRGVsZXRlZENh
bGxiYWNrLCByZXF1ZXN0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBn
X3N0cmZyZWV2KHRva2Vucyk7CkBAIC0zNzksNyArNDI1LDcgQEAgc3RhdGljIHZvaWQgYWJvdXRE
YXRhRmlsbE9yaWdpbnNUYWJsZShHU3RyaW5nICpyZXN1bHQsIEdMaXN0ICpvcmlnaW5zLCBjb25z
dCBjaGEKIAogc3RhdGljIHZvaWQgYWJvdXREYXRhSGFuZGxlRmluaXNoUmVxdWVzdElmQ29tcGxl
dGUoQWJvdXREYXRhUmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBpZiAoIXJlcXVlc3QtPmdvdE1l
bW9yeUNhY2hlT3JpZ2lucyB8fCAhcmVxdWVzdC0+Z290RGlza0NhY2hlT3JpZ2lucykKKyAgICBp
ZiAoIXJlcXVlc3QtPmdvdE1lbW9yeUNhY2hlT3JpZ2lucyB8fCAhcmVxdWVzdC0+Z290RGlza0Nh
Y2hlT3JpZ2lucyB8fCAhcmVxdWVzdC0+Z290U2Vzc2lvblN0b3JhZ2VPcmlnaW5zIHx8ICFyZXF1
ZXN0LT5nb3RMb2NhbFN0b3JhZ2VPcmlnaW5zKQogICAgICAgICByZXR1cm47CiAKICAgICBHU3Ry
aW5nICpyZXN1bHQgPSBnX3N0cmluZ19uZXcoCkBAIC0zOTcsNiArNDQzLDggQEAgc3RhdGljIHZv
aWQgYWJvdXREYXRhSGFuZGxlRmluaXNoUmVxdWVzdElmQ29tcGxldGUoQWJvdXREYXRhUmVxdWVz
dCAqcmVxdWVzdCkKICAgICBndWludDY0IHBhZ2VJRCA9IHdlYmtpdF93ZWJfdmlld19nZXRfcGFn
ZV9pZCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhyZXF1ZXN0LT5yZXF1
ZXN0KSk7CiAgICAgYWJvdXREYXRhRmlsbE9yaWdpbnNUYWJsZShyZXN1bHQsIHJlcXVlc3QtPm1l
bW9yeUNhY2hlT3JpZ2lucywgIk1lbW9yeSBDYWNoZSIsICJtZW1vcnkiLCBOVUxMLCBwYWdlSUQp
OwogICAgIGFib3V0RGF0YUZpbGxPcmlnaW5zVGFibGUocmVzdWx0LCByZXF1ZXN0LT5kaXNrQ2Fj
aGVPcmlnaW5zLCAiRGlzayBDYWNoZSIsICJkaXNrIiwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKKyAgICBhYm91
dERhdGFGaWxsT3JpZ2luc1RhYmxlKHJlc3VsdCwgcmVxdWVzdC0+c2Vzc2lvblN0b3JhZ2VPcmln
aW5zLCAiU2Vzc2lvbiBTdG9yYWdlIiwgInNlc3Npb24tc3RvcmFnZSIsIE5VTEwsIHBhZ2VJRCk7
CisgICAgYWJvdXREYXRhRmlsbE9yaWdpbnNUYWJsZShyZXN1bHQsIHJlcXVlc3QtPmxvY2FsU3Rv
cmFnZU9yaWdpbnMsICJMb2NhbCBTdG9yYWdlIiwgImxvY2FsLXN0b3JhZ2UiLCB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KG1hbmFnZXIpLCBw
YWdlSUQpOwogCiAgICAgcmVzdWx0ID0gZ19zdHJpbmdfYXBwZW5kKHJlc3VsdCwgIjwvYm9keT48
L2h0bWw+Iik7CiAgICAgZ3NpemUgc3RyZWFtTGVuZ3RoID0gcmVzdWx0LT5sZW47CkBAIC00MTgs
MTIgKzQ2NiwyOCBAQCBzdGF0aWMgdm9pZCBnb3REaXNrQ2FjaGVPcmlnaW5zQ2FsbGJhY2soV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLCBHQXN5bgogICAgIGFib3V0RGF0YUhhbmRs
ZUZpbmlzaFJlcXVlc3RJZkNvbXBsZXRlKHJlcXVlc3QpOwogfQogCitzdGF0aWMgdm9pZCBnb3RT
ZXNzaW9uU3RvcmFnZU9yaWdpbnMoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLCBH
QXN5bmNSZXN1bHQgKnJlc3VsdCwgQWJvdXREYXRhUmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBy
ZXF1ZXN0LT5nb3RTZXNzaW9uU3RvcmFnZU9yaWdpbnMgPSBUUlVFOworICAgIHJlcXVlc3QtPnNl
c3Npb25TdG9yYWdlT3JpZ2lucyA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3Jp
Z2luc193aXRoX3Nlc3Npb25fc3RvcmFnZV9maW5pc2gobWFuYWdlciwgcmVzdWx0LCBOVUxMKTsK
KyAgICBhYm91dERhdGFIYW5kbGVGaW5pc2hSZXF1ZXN0SWZDb21wbGV0ZShyZXF1ZXN0KTsKK30K
Kworc3RhdGljIHZvaWQgZ290TG9jYWxTdG9yYWdlT3JpZ2lucyhXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIgKm1hbmFnZXIsIEdBc3luY1Jlc3VsdCAqcmVzdWx0LCBBYm91dERhdGFSZXF1ZXN0ICpy
ZXF1ZXN0KQoreworICAgIHJlcXVlc3QtPmdvdExvY2FsU3RvcmFnZU9yaWdpbnMgPSBUUlVFOwor
ICAgIHJlcXVlc3QtPmxvY2FsU3RvcmFnZU9yaWdpbnMgPSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9sb2NhbF9zdG9yYWdlX2ZpbmlzaChtYW5hZ2VyLCByZXN1
bHQsIE5VTEwpOworICAgIGFib3V0RGF0YUhhbmRsZUZpbmlzaFJlcXVlc3RJZkNvbXBsZXRlKHJl
cXVlc3QpOworfQorCiBzdGF0aWMgdm9pZCBhYm91dERhdGFIYW5kbGVSZXF1ZXN0KFdlYktpdFVS
SVNjaGVtZVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAgICAgQWJvdXREYXRhUmVxdWVzdCAqZGF0YVJl
cXVlc3QgPSBhYm91dERhdGFSZXF1ZXN0TmV3KHJlcXVlc3QpOwogICAgIFdlYktpdFdlYnNpdGVE
YXRhTWFuYWdlciogbWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwogICAgIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc19pbl9tZW1vcnlfY2FjaGUobWFuYWdlciwg
TlVMTCwgKEdBc3luY1JlYWR5Q2FsbGJhY2spZ290TWVtb3J5Q2FjaGVPcmlnaW5zQ2FsbGJhY2ss
IGRhdGFSZXF1ZXN0KTsKICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdp
bnNfaW5fZGlza19jYWNoZShtYW5hZ2VyLCBOVUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylnb3RE
aXNrQ2FjaGVPcmlnaW5zQ2FsbGJhY2ssIGRhdGFSZXF1ZXN0KTsKKyAgICB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfd2l0aF9zZXNzaW9uX3N0b3JhZ2UobWFuYWdlciwg
TlVMTCwgKEdBc3luY1JlYWR5Q2FsbGJhY2spZ290U2Vzc2lvblN0b3JhZ2VPcmlnaW5zLCBkYXRh
UmVxdWVzdCk7CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vcmlnaW5zX3dp
dGhfbG9jYWxfc3RvcmFnZShtYW5hZ2VyLCBOVUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylnb3RM
b2NhbFN0b3JhZ2VPcmlnaW5zLCBkYXRhUmVxdWVzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFib3V0
VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3Qs
IGdwb2ludGVyIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggOTI3YTZi
My4uNDEyNjA0NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC00MzYsNiArNDM2LDE2
IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsICJmb28iLCAz
KTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc2Vzc2lvbnN0b3Jh
Z2UiKSkgeworICAgICAgICBjb25zdCBjaGFyKiBzZXNzaW9uU3RvcmFnZUhUTUwgPSAiPGh0bWw+
PGJvZHkgb25sb2FkPVwic2Vzc2lvblN0b3JhZ2UuZm9vID0gJ2Jhcic7XCI+PC9ib2R5PjwvaHRt
bD4iOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSwgU09VUF9NRU1PUllfU1RBVElDLCBzZXNzaW9uU3RvcmFnZUhUTUwsIHN0cmxlbihzZXNz
aW9uU3RvcmFnZUhUTUwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVz
c2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvbG9jYWxzdG9yYWdlIikpIHsKKyAgICAgICAgY29uc3QgY2hhciogbG9jYWxTdG9yYWdlSFRN
TCA9ICI8aHRtbD48Ym9keSBvbmxvYWQ9XCJsb2NhbFN0b3JhZ2UuZm9vID0gJ2Jhcic7XCI+PC9i
b2R5PjwvaHRtbD4iOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+
cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBsb2NhbFN0b3JhZ2VIVE1MLCBzdHJs
ZW4obG9jYWxTdG9yYWdlSFRNTCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0
ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0
dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogICAgIH0gZWxzZQogICAgICAgICBzb3VwX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQpAQCAt
NTU2LDcgKzU2Niw5IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgRGF0YVR5cGUgewogICAg
ICAgICBNZW1vcnlDYWNoZSwKLSAgICAgICAgRGlza0NhY2hlCisgICAgICAgIERpc2tDYWNoZSwK
KyAgICAgICAgU2Vzc2lvblN0b3JhZ2UsCisgICAgICAgIExvY2FsU3RvcmFnZQogICAgIH07CiAK
ICAgICBXZWJzaXRlRGF0YVRlc3QoKQpAQCAtNTg3LDYgKzU5OSwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgRGF0YVR5cGU6OkRpc2tDYWNoZToKICAgICAgICAgICAgIHRlc3QtPm1fb3JpZ2lu
cyA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb3JpZ2luc19pbl9kaXNrX2NhY2hl
X2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIG51bGxwdHIpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOgorICAgICAgICAgICAgdGVzdC0+
bV9vcmlnaW5zID0gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vcmlnaW5zX3dpdGhf
c2Vzc2lvbl9zdG9yYWdlX2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIG51bGxwdHIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVR5cGU6OkxvY2FsU3RvcmFnZToKKyAgICAg
ICAgICAgIHRlc3QtPm1fb3JpZ2lucyA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
b3JpZ2luc193aXRoX2xvY2FsX3N0b3JhZ2VfZmluaXNoKG1hbmFnZXIsIHJlc3VsdCwgbnVsbHB0
cik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAgICAgIH0KQEAgLTYwNCw2ICs2MjIsMTIgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIERhdGFUeXBlOjpEaXNrQ2FjaGU6CiAgICAgICAgICAgICB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29yaWdpbnNfaW5fZGlza19jYWNoZShtX21hbmFn
ZXIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oZmV0Y2hP
cmlnaW5zQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfb3JpZ2luc193aXRoX3Nlc3Npb25fc3RvcmFnZShtX21hbmFnZXIsIG51
bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oZmV0Y2hPcmlnaW5z
Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U6CisgICAgICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X29yaWdpbnNfd2l0aF9sb2NhbF9zdG9yYWdlKG1fbWFuYWdlciwgbnVsbHB0ciwgcmVp
bnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihmZXRjaE9yaWdpbnNDYWxsYmFjayks
IHRoaXMpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwogICAgICAgICB9CkBAIC02MjAsNiArNjQ0LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBEYXRhVHlwZTo6RGlza0NhY2hlOgogICAgICAgICAgICAg
Z19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9kaXNrX2NhY2hlX2Zv
cl9vcmlnaW5zX2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIG51bGxwdHIpKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAg
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9z
dG9yYWdlX2Zvcl9vcmlnaW5zX2ZpbmlzaChtYW5hZ2VyLCByZXN1bHQsIG51bGxwdHIpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERhdGFUeXBlOjpMb2NhbFN0b3JhZ2U6Cisg
ICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX2xv
Y2FsX3N0b3JhZ2VfZm9yX29yaWdpbnNfZmluaXNoKG1hbmFnZXIsIHJlc3VsdCwgbnVsbHB0cikp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnX2Fz
c2VydF9ub3RfcmVhY2hlZCgpOwogICAgICAgICB9CkBAIC02MzYsNiArNjY2LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBEYXRhVHlwZTo6RGlza0NhY2hlOgogICAgICAgICAgICAgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2RlbGV0ZV9kaXNrX2NhY2hlX2Zvcl9vcmlnaW5zKG1fbWFu
YWdlciwgb3JpZ2lucywgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxi
YWNrPihkZWxldGVPcmlnaW5zQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZToKKyAgICAgICAgICAgIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9kZWxldGVfc2Vzc2lvbl9zdG9yYWdlX2Zvcl9vcmlnaW5z
KG1fbWFuYWdlciwgb3JpZ2lucywgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihkZWxldGVPcmlnaW5zQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERhdGFUeXBlOjpMb2NhbFN0b3JhZ2U6CisgICAgICAgICAgICB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZGVsZXRlX2xvY2FsX3N0b3JhZ2VfZm9yX29yaWdp
bnMobV9tYW5hZ2VyLCBvcmlnaW5zLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1Jl
YWR5Q2FsbGJhY2s+KGRlbGV0ZU9yaWdpbnNDYWxsYmFjayksIHRoaXMpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hl
ZCgpOwogICAgICAgICB9CkBAIC02NTEsNiArNjg3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBEYXRhVHlwZTo6RGlza0NhY2hlOgogICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2Rpc2tfY2FjaGVfZmluaXNoKG1hbmFnZXIsIHJlc3VsdCwg
bnVsbHB0cikpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVR5cGU6OlNl
c3Npb25TdG9yYWdlOgorICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2NsZWFyX3Nlc3Npb25fc3RvcmFnZV9maW5pc2gobWFuYWdlciwgcmVzdWx0LCBudWxs
cHRyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlOgorICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2NsZWFyX2xvY2FsX3N0b3JhZ2VfZmluaXNoKG1hbmFnZXIsIHJlc3VsdCwgbnVsbHB0cikpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnX2Fzc2Vy
dF9ub3RfcmVhY2hlZCgpOwogICAgICAgICB9CkBAIC02NjcsNiArNzA5LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBEYXRhVHlwZTo6RGlza0NhY2hlOgogICAgICAgICAgICAgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2Rpc2tfY2FjaGUobV9tYW5hZ2VyLCBudWxscHRyLCBy
ZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGRlbGV0ZUFsbE9yaWdpbnNDYWxs
YmFjayksIHRoaXMpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlOgorICAgICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2NsZWFyX3Nlc3Npb25fc3RvcmFnZShtX21hbmFnZXIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oZGVsZXRlQWxsT3JpZ2luc0NhbGxiYWNrKSwgdGhpcyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
OgorICAgICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2xvY2FsX3N0
b3JhZ2UobV9tYW5hZ2VyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KGRlbGV0ZUFsbE9yaWdpbnNDYWxsYmFjayksIHRoaXMpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgp
OwogICAgICAgICB9CkBAIC03NjgsNiArODE2LDkxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250
ZXh0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh0ZXN0LT5tX3dl
YkNvbnRleHQuZ2V0KCksIG9yaWdpbmFsUG9saWN5KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdl
YkNvbnRleHRXZWJzaXRlRGF0YVN0b3JhZ2UoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQoreworICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSBvcmlnaW5hbFBvbGljeSA9IHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3kodGVzdC0+bV93ZWJDb250ZXh0
LmdldCgpKTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHRl
c3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7
CisKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9zZXNzaW9uc3Rv
cmFnZSIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAg
ICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Nlc3Npb25zdG9y
YWdlIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAg
IEdMaXN0KiBvcmlnaW5zID0gdGVzdC0+ZmV0Y2hPcmlnaW5zKFdlYnNpdGVEYXRhVGVzdDo6RGF0
YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKKyAgICBnX2Fzc2VydChvcmlnaW5zKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoZ19saXN0X2xlbmd0aChvcmlnaW5zKSwgPT0sIDIpOworICAgIFdlYktpdFNl
Y3VyaXR5T3JpZ2luKiBodHRwT3JpZ2luID0gbnVsbHB0cjsKKyAgICBmb3IgKEdMaXN0KiBsID0g
b3JpZ2luczsgbDsgbCA9IGdfbGlzdF9uZXh0KGwpKSB7CisgICAgICAgIFdlYktpdFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4gPSBzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KGwtPmRh
dGEpOworICAgICAgICBjb25zdCBjaGFyKiBwcm90b2NvbCA9IHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X3Byb3RvY29sKG9yaWdpbik7CisgICAgICAgIGdfYXNzZXJ0KHByb3RvY29sKTsKKyAg
ICAgICAgaWYgKGdfc3RyX2VxdWFsKHByb3RvY29sLCAiaHR0cCIpKSB7CisgICAgICAgICAgICBo
dHRwT3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9yZWYob3JpZ2luKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdp
biksID09LCBrU2VydmVyLT5iYXNlVVJJKCktPmhvc3QpOworICAgICAgICAgICAgZ19hc3NlcnRf
Y21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIGtTZXJ2
ZXItPmJhc2VVUkkoKS0+cG9ydCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocHJv
dG9jb2wsICJodHRwcyIpKSB7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwga0h0dHBzU2VydmVyLT5iYXNlVVJJ
KCktPmhvc3QpOworICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIGtIdHRwc1NlcnZlci0+YmFzZVVSSSgpLT5wb3J0
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwor
ICAgIH0KKworICAgIGdfYXNzZXJ0KGh0dHBPcmlnaW4pOworICAgIEdMaXN0IG9yaWdpbnNUb0Rl
bGV0ZSA9IHsgaHR0cE9yaWdpbiwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIHRlc3QtPmRlbGV0
ZU9yaWdpbnNBbmRXYWl0VW50aWxGaW5pc2hlZChXZWJzaXRlRGF0YVRlc3Q6OkRhdGFUeXBlOjpT
ZXNzaW9uU3RvcmFnZSwgJm9yaWdpbnNUb0RlbGV0ZSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl91bnJlZihodHRwT3JpZ2luKTsKKyAgICBvcmlnaW5zID0gdGVzdC0+ZmV0Y2hPcmlnaW5z
KFdlYnNpdGVEYXRhVGVzdDo6RGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKKyAgICBnX2Fzc2Vy
dChvcmlnaW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19saXN0X2xlbmd0aChvcmlnaW5zKSwg
PT0sIDEpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9w
cm90b2NvbChzdGF0aWNfY2FzdDxXZWJLaXRTZWN1cml0eU9yaWdpbio+KG9yaWdpbnMtPmRhdGEp
KSwgPT0sICJodHRwcyIpOworCisgICAgdGVzdC0+ZGVsZXRlQWxsT3JpZ2luc0FuZFdhaXRVbnRp
bEZpbmlzaGVkKFdlYnNpdGVEYXRhVGVzdDo6RGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlKTsKKyAg
ICBnX2Fzc2VydCghdGVzdC0+ZmV0Y2hPcmlnaW5zKFdlYnNpdGVEYXRhVGVzdDo6RGF0YVR5cGU6
OlNlc3Npb25TdG9yYWdlKSk7CisKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9sb2NhbHN0b3JhZ2UiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworCisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9sb2NhbHN0b3JhZ2UiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOworCisgICAgLy8gTG9jYWwgc3RvcmFnZSB1c2VzIGEgMSBzZWNvbmQgdGltZXIgdG8g
dXBkYXRlIHRoZSBkYXRhYmFzZS4KKyAgICB0ZXN0LT53YWl0KDEpOworCisgICAgb3JpZ2lucyA9
IHRlc3QtPmZldGNoT3JpZ2lucyhXZWJzaXRlRGF0YVRlc3Q6OkRhdGFUeXBlOjpMb2NhbFN0b3Jh
Z2UpOworICAgIGdfYXNzZXJ0KG9yaWdpbnMpOworICAgIGdfYXNzZXJ0X2NtcGludChnX2xpc3Rf
bGVuZ3RoKG9yaWdpbnMpLCA9PSwgMik7CisgICAgaHR0cE9yaWdpbiA9IG51bGxwdHI7CisgICAg
Zm9yIChHTGlzdCogbCA9IG9yaWdpbnM7IGw7IGwgPSBnX2xpc3RfbmV4dChsKSkgeworICAgICAg
ICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gc3RhdGljX2Nhc3Q8V2ViS2l0U2VjdXJp
dHlPcmlnaW4qPihsLT5kYXRhKTsKKyAgICAgICAgY29uc3QgY2hhciogcHJvdG9jb2wgPSB3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pOworICAgICAgICBnX2Fzc2Vy
dChwcm90b2NvbCk7CisgICAgICAgIGlmIChnX3N0cl9lcXVhbChwcm90b2NvbCwgImh0dHAiKSkg
eworICAgICAgICAgICAgaHR0cE9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fcmVmKG9y
aWdpbik7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfaG9zdChvcmlnaW4pLCA9PSwga1NlcnZlci0+YmFzZVVSSSgpLT5ob3N0KTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9y
aWdpbiksID09LCBrU2VydmVyLT5iYXNlVVJJKCktPnBvcnQpOworICAgICAgICB9IGVsc2UgaWYg
KGdfc3RyX2VxdWFsKHByb3RvY29sLCAiaHR0cHMiKSkgeworICAgICAgICAgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sIGtIdHRw
c1NlcnZlci0+YmFzZVVSSSgpLT5ob3N0KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCBrSHR0cHNTZXJ2ZXIt
PmJhc2VVUkkoKS0+cG9ydCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ19hc3NlcnRf
bm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAgICBnX2Fzc2VydChodHRwT3JpZ2luKTsKKyAgICBv
cmlnaW5zVG9EZWxldGUuZGF0YSA9IGh0dHBPcmlnaW47CisgICAgdGVzdC0+ZGVsZXRlT3JpZ2lu
c0FuZFdhaXRVbnRpbEZpbmlzaGVkKFdlYnNpdGVEYXRhVGVzdDo6RGF0YVR5cGU6OkxvY2FsU3Rv
cmFnZSwgJm9yaWdpbnNUb0RlbGV0ZSk7CisgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJl
ZihodHRwT3JpZ2luKTsKKyAgICBvcmlnaW5zID0gdGVzdC0+ZmV0Y2hPcmlnaW5zKFdlYnNpdGVE
YXRhVGVzdDo6RGF0YVR5cGU6OkxvY2FsU3RvcmFnZSk7CisgICAgZ19hc3NlcnQob3JpZ2lucyk7
CisgICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgob3JpZ2lucyksID09LCAxKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2woc3Rh
dGljX2Nhc3Q8V2ViS2l0U2VjdXJpdHlPcmlnaW4qPihvcmlnaW5zLT5kYXRhKSksID09LCAiaHR0
cHMiKTsKKworICAgIHRlc3QtPmRlbGV0ZUFsbE9yaWdpbnNBbmRXYWl0VW50aWxGaW5pc2hlZChX
ZWJzaXRlRGF0YVRlc3Q6OkRhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpOworICAgIGdfYXNzZXJ0KCF0
ZXN0LT5mZXRjaE9yaWdpbnMoV2Vic2l0ZURhdGFUZXN0OjpEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
KSk7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHRlc3Qt
Pm1fd2ViQ29udGV4dC5nZXQoKSwgb3JpZ2luYWxQb2xpY3kpOworfQorCiBzdGF0aWMgdm9pZCB0
ZXN0U2VjdXJpdHlPcmlnaW5CYXNpYyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJL
aXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0
dHAiLCAiMTI3LjAuMC4xIiwgMTIzNCk7CkBAIC03OTUsNiArOTI4LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFNlY3VyaXR5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU1hbmFnZXIi
LCAic2VjdXJpdHktcG9saWN5IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eVBvbGljeSk7CiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVz
dFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJX
ZWJLaXRXZWJDb250ZXh0IiwgIndlYnNpdGUtZGF0YS9jYWNoZSIsIHRlc3RXZWJDb250ZXh0V2Vi
c2l0ZURhdGFDYWNoZSk7CisgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYkNvbnRl
eHQiLCAid2Vic2l0ZS1kYXRhL3N0b3JhZ2UiLCB0ZXN0V2ViQ29udGV4dFdlYnNpdGVEYXRhU3Rv
cmFnZSk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZWN1cml0eU9yaWdpbiIsICJiYXNpYyIsIHRl
c3RTZWN1cml0eU9yaWdpbkJhc2ljKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>