<?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>88690</bug_id>
          
          <creation_ts>2012-06-08 14:44:22 -0700</creation_ts>
          <short_desc>IndexedDB: Error codes, phase two</short_desc>
          <delta_ts>2012-06-12 13:46:20 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85513</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>645045</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-08 14:44:22 -0700</bug_when>
    <thetext>IndexedDB: Error codes, phase two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645051</commentid>
    <comment_count>1</comment_count>
      <attachid>146655</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-08 14:49:43 -0700</bug_when>
    <thetext>Created attachment 146655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646227</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 13:54:24 -0700</bug_when>
    <thetext>jsbell@ / dgrogan@ - sanity check?

This is a few small things that span a lot of files. They&apos;re all kind of interconnected, and would be a mess to try to decouple:
- fix tests that try to create transactions in the setversion transaction (removal of that, along with a patch that verifies that you CANNOT do that, is coming up when this lands)
- removes bit about I/O errors and error codes - spec now says UNKNOWN_ERR is correct
- moves some readonly checks into the frontend, and puts an assert in the backend - this helps reduce RPCs as well as consolidates error checks (otherwise, trying to implement which exception takes precedence over other exceptions is near-impossible)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646228</commentid>
    <comment_count>3</comment_count>
      <attachid>146899</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 13:54:44 -0700</bug_when>
    <thetext>Created attachment 146899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646301</commentid>
    <comment_count>4</comment_count>
      <attachid>146899</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-11 15:03:46 -0700</bug_when>
    <thetext>Comment on attachment 146899
Patch

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

Overall lgtm, just nits.

&gt; Source/WebCore/ChangeLog:17
&gt; +        already correct.

Need to close the parentheses.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:209
&gt; +        ec = IDBDatabaseException::READ_ONLY_ERR;

FYI, in one of my in-progress patches I added IDBTransaction::isVersionChange() as a convenience. Maybe add IDBTransaction::isReadOnly() ?

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:85
&gt; +function createObjectStore(request)

The onsuccess callback parameter is an event, not a request. This is also not necessary as the request object from line 80 is global, and the eval in line 89 has a global context - the parameter would not be visible to it anyway.

&gt; LayoutTests/storage/indexeddb/mozilla/index-prev-no-duplicate.html:107
&gt; +    }

Should have a ; after the brace.

&gt; LayoutTests/storage/indexeddb/resources/cursor-advance.js:51
&gt; +function createObjectStore(request)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646400</commentid>
    <comment_count>5</comment_count>
      <attachid>146955</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 16:25:56 -0700</bug_when>
    <thetext>Created attachment 146955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646413</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-11 16:32:08 -0700</bug_when>
    <thetext>tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646419</commentid>
    <comment_count>7</comment_count>
      <attachid>146955</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-11 16:37:17 -0700</bug_when>
    <thetext>Comment on attachment 146955
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.h:73
&gt; +    bool isReadOnly() const { return m_mode == READ_ONLY; };

Nit: The semicolon at the end isn&apos;t necessary.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.h:79
&gt; +    const unsigned short m_mode;

Nit: Can we change this from unsigned short to Mode in a follow up change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647089</commentid>
    <comment_count>8</comment_count>
      <attachid>147114</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-12 11:07:17 -0700</bug_when>
    <thetext>Created attachment 147114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647095</commentid>
    <comment_count>9</comment_count>
      <attachid>147114</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-12 11:08:16 -0700</bug_when>
    <thetext>Comment on attachment 147114
Patch

tony@ or jsbell@ - cq?
(nit addressed - we&apos;re cleaning up the whole mode thing over a series of patches, and I&apos;ll try to make the enum thing part of that)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647152</commentid>
    <comment_count>10</comment_count>
      <attachid>147114</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 11:54:11 -0700</bug_when>
    <thetext>Comment on attachment 147114
Patch

Rejecting attachment 147114 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12946582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647168</commentid>
    <comment_count>11</comment_count>
      <attachid>147114</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-12 12:16:29 -0700</bug_when>
    <thetext>Comment on attachment 147114
Patch

sorry tony@ - one more try? At least my committer paperwork is in the mail :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647171</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-12 12:20:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 147114 [details])
&gt; Rejecting attachment 147114 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1
&gt; 
&gt; ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).
&gt; 
&gt; Full output: http://queues.webkit.org/results/12946582

You should be able to use &quot;webkit-patch land-safely&quot; when you have r+ now.  It will fill in the reviewer name, upload the patch and set cq?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647257</commentid>
    <comment_count>13</comment_count>
      <attachid>147114</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 13:46:15 -0700</bug_when>
    <thetext>Comment on attachment 147114
Patch

Clearing flags on attachment: 147114

Committed r120114: &lt;http://trac.webkit.org/changeset/120114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647258</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 13:46:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146655</attachid>
            <date>2012-06-08 14:49:43 -0700</date>
            <delta_ts>2012-06-11 13:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88690-20120608144943.patch</filename>
            <type>text/plain</type>
            <size>28524</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxMzM2MzIyNDkwYjRj
ODIwMmIyMjliOGE5MzE1ZjYwM2FiYjdhYS4uOTkzODI3NGVkOWUyNWEyMzk1MWUwODRiZDNkZDM4
ZDNmZWVjNTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVy
cm9yIGNvZGVzLCBwaGFzZSB0d28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4NjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRoZSBuZXh0IHBoYXNlIG9mIEluZGV4ZWREQiBlcnJvciBjb2Rl
cyB0byBtYXRjaCB0aGUgc3BlYy4KKyAgICAgICAgVGhpcyB1cGRhdGUgaXMgbW9zdGx5IGZvY3Vz
ZWQgb24gREFUQV9FUlIgdnMgQ09OU1RSQUlOVF9FUlIuCisKKyAgICAgICAgQWxzbyBtb3ZlcyBz
b21lIG9mIHRoZSBlcnJvciBjaGVja2luZyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1vZGUKKyAgICAg
ICAgaW50byB0aGUgZnJvbnRlbmQgYW5kIHJlcGxhY2VzIHRoZSBiYWNrZW5kIGNoZWNrcyB3aXRo
IGFzc2VydHMsIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIGNvbnNvbGlkYXRlIGVycm9yIGNoZWNr
aW5nIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyBhIGZldyBGSVhN
RSdzIHRoYXQgYXJlIG5vIGxvbmdlciB0cnVlIChhYm91dCAKKyAgICAgICAgSS9PIGVycm9ycyAt
IHRoZSBzcGVjIHdhcyB1cGRhdGVkIGFuZCBvdXIgaW1wbGVtZW50YXRpb24gd2FzCisgICAgICAg
IGFscmVhZHkgY29ycmVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IGNvdmVyIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y2xlYXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVudW1Nb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisKIDIwMTIt
MDYtMDggIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEJldHRlciBsYWJlbHMgcG9zaXRpb25pbmcgb24gdGhlIG1lbW9yeSBw
aWUgY2hhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCmluZGV4IGI2MjRhMzU5Njg1NzJlMDI4NzMwZGE1NjZlYjA0YTVmODI0YWZkOTYuLjA0Mzk4
NjM0Y2IyMDVhNTAwZDJlZTI4ODhhZGM1NzFjYWVjYjczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMjA1LDYgKzIwNSwxMSBAQCB2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6ZGVsZXRlIik7CisgICAgaWYgKG1f
dHJhbnNhY3Rpb24tPmVudW1Nb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoIW1fZ290VmFsdWUpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBlMWQ3MWRhMjIxNGQ2ZGY2NmRjMDVjYzZh
MzQwZTIzN2I2ZTMwN2QxLi5lYjczZTBjMzJkZTMyODhjMjgwMDU3NGI4MDU0Nzc4NzE5NjQ4MDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xNjMsNiArMTYzLDggQEAgdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXMKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZSIpOworICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisK
ICAgICBpZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTk4MGMwMmE1ZDM1
NjExNDNiNjlhMjVhZDRmYTJjZWIzMjI1OTA3Ny4uNzM5YzQ2OGU0MWNmN2VhMmQwMTE3NjMzYjg1
OGUxZDc1MjRjZTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTI0OSw3ICsyNDksNiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZgogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFi
YXNlLT5pZCgpOwogICAgIGRhdGFiYXNlLT5tX3ZlcnNpb24gPSB2ZXJzaW9uOwogICAgIGlmICgh
ZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGRhdGFi
YXNlSWQsIGRhdGFiYXNlLT5tX3ZlcnNpb24pKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgSW5k
ZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBk
ZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJF
cnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOwogICAgICAgICB0cmFuc2Fj
dGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDEwOWE3NTE1Zjg3NTgz
YTI3NmE1MjIyZWMwYmViYjljYjQ5NjMxZjAuLjJmZDRmZTZjZThkNmM3YTQ3NDE4ZWZhZGRiYmM0
ZjAzOGU0MGFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTExOCw2ICsxMTgsMTEgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOworICAgIGlmIChtX3Ry
YW5zYWN0aW9uLT5lbnVtTW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5
OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQyLDYgKzE0NywxMSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CisgICAgaWYg
KG1fdHJhbnNhY3Rpb24tPmVudW1Nb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJ
REJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjYsNiArMTc2LDExIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24t
PmVudW1Nb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4Myw2ICsxOTgsMTEg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5l
bnVtTW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgaWYgKCFrZXkgfHwgIWtleS0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIw
MCw2ICsyMjAsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVs
ZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6
OmNsZWFyIik7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmVudW1Nb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlJFQURfT05MWSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpS
RUFEX09OTFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jbGVhcihy
ZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggMWIzOTYzMDYwMTM0OTYyODEwY2M4ODQwNzEx
OWMwNzk2ZTFlZmM0ZC4uMmFmOGFiZGY5NjJhOTIwNDBiY2FkNjg1Y2Y3YTVlYzgyYTFkZDBiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTE0MiwxMCArMTQyLDggQEAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXlJbnRvS2V5UGF0aChQ
YXNzUmVmUHRyPElEQktleT4KIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dCIpOwotICAgIGlmICh0cmFuc2FjdGlvblB0ci0+bW9kZSgpID09IElEQlRy
YW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6UkVBRF9PTkxZX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKworICAgIEFTU0VSVCh0
cmFuc2FjdGlvblB0ci0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsK
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwpAQCAt
MjQwLDcgKzIzOCw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVja3MgaW4gcHV0KCkgZW5zdXJlIHRoaXMgc2hvdWxkIG9ubHkgaGFw
cGVuIGlmIEkvTyBlcnJvciBvY2N1cnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVy
cm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yIGluc2VydGluZyBnZW5lcmF0
ZWQga2V5IGludG8gdGhlIG9iamVjdC4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI3OCw3ICsyNzUsNyBAQCB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPAogCiAgICAgICAgIGlmICgoIWluZGV4LT5tdWx0aUVudHJ5KCkgfHwgaW5k
ZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkgJiYgIWluZGV4LT5hZGRpbmdLZXlB
bGxvd2VkKGluZGV4S2V5LmdldCgpLCBrZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICBvYmplY3RT
dG9yZS0+cmVzZXRBdXRvSW5jcmVtZW50S2V5Q2FjaGUoKTsKLSAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5
cyBmb3IgYW4gaW5kZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVu
dHMuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJPbmUgb2YgdGhlIGRlcml2
ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRleCBkb2VzIG5vdCBzYXRpc2Z5IGl0
cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMjg2LDcgKzI4Myw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXktPmFycmF5KCkuc2l6ZSgpOyAr
K2opIHsKICAgICAgICAgICAgICAgICBpZiAoIWluZGV4LT5hZGRpbmdLZXlBbGxvd2VkKGluZGV4
S2V5LT5hcnJheSgpW2pdLmdldCgpLCBrZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAg
IG9iamVjdFN0b3JlLT5yZXNldEF1dG9JbmNyZW1lbnRLZXlDYWNoZSgpOwotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk9uZSBvZiB0aGUgZGVyaXZlZCAoZnJv
bSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRvZXMgbm90IHNhdGlzZnkgaXRzIHVuaXF1
ZW5lc3MgcmVxdWlyZW1lbnRzLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlIsICJPbmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBp
bmRleCBkb2VzIG5vdCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC0yOTgsNyArMjk1LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAvLyBC
ZWZvcmUgdGhpcyBwb2ludCwgZG9uJ3QgZG8gYW55IG11dGF0aW9uLiAgQWZ0ZXIgdGhpcyBwb2lu
dCwgcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3IuCiAKICAgICBpZiAo
IW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+cHV0T2JqZWN0U3RvcmVSZWNvcmQob2JqZWN0
U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksIHZhbHVlLT50b1dp
cmVTdHJpbmcoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgLy8gRklYTUU6
IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJv
ciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7CiAgICAgICAg
IHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CkBAIC0zMTEsNyArMzA3LDYg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBUaGUg
aW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5vdCBleGlzdCBpbiB0aGUg
ZGF0YWJhc2UgeWV0LgogCiAgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgp
LT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2Jq
ZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24g
ZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAg
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3Rh
YmxlIHN0b3JhZ2UuIikpOwogICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zMjMsNyArMzE4LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjwKIAogICAgICAgICBpZiAoIWluZGV4LT5tdWx0aUVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUo
KSAhPSBJREJLZXk6OkFycmF5VHlwZSkgewogICAgICAgICAgICAgaWYgKCFvYmplY3RTdG9yZS0+
YmFja2luZ1N0b3JlKCktPnB1dEluZGV4RGF0YUZvclJlY29yZChvYmplY3RTdG9yZS0+ZGF0YWJh
c2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksICppbmRleEtleSwgcmVjb3Jk
SWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIEluZGV4
ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUgZGVk
aWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9F
UlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOwogICAgICAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTMzMyw3ICszMjcsNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAgICAgICAgICAgQVNT
RVJUKGluZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5OjpBcnJheVR5cGUpOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBpbmRleEtleS0+YXJyYXkoKS5zaXplKCk7ICsraikgewog
ICAgICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5wdXRJbmRl
eERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlk
KCksIGluZGV4LT5pZCgpLCAqaW5kZXhLZXktPmFycmF5KClbal0sIHJlY29yZElkZW50aWZpZXIu
Z2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRh
YmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQg
dG8gSS9PIGVycm9ycy4KICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIs
ICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOwogICAgICAgICAgICAg
ICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzY0LDEwICszNTcsOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZQogdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxl
dGUiKTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVB
RF9PTkxZKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1v
ZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIAogICAgIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSA9IHBycEtleVJhbmdlOwpAQCAtNDA5LDEwICs0MDAsOCBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVh
cihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyIik7Ci0gICAgaWYgKHRy
YW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorCisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNh
Y3Rpb246OlJFQURfT05MWSk7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cyA9IHBycENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFjZWJlOWMxOTNkOTI3YmMxNTk2MjY3ZWI3MzU2OGI3
MWZiNTllNzIuLjYwMzk0ZWE3MGRjMWY5NDI1ODlmYWI0YzU4NzUwN2Q2Y2Y1MmUyYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3Q7CiAK
ICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaG9ydCBlbnVt
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIElEQkRhdGFiYXNlKiBkYigpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKICAgICB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuaAppbmRleCAyZjljMmJhODQxMmEyOWRiOWY5NjNjYmViZDFjZTU2YWVhNzNiZDI0
Li40ZWEzYmZkNDM3MTNhZGQ0OWE4MTc3NzE0NGQxNjI1Y2QxNmQxZWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZU9w
ZW5DdXJzb3JzKCk7CiAKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9vYmplY3RTdG9yZU5h
bWVzOwotICAgIHVuc2lnbmVkIHNob3J0IG1fbW9kZTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzVhNjkyYmRmMzYwNjFhZjcxNzQ2M2U4
YmUyYWEwOGM5NWU4Y2ZkNC4uOGJiZjgxYmNlOGRhYjlkNDUxOGIyNTgyMjMzNGJhNTUwYzFlNWE1
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA2LTA4ICBBbGVjIEZsZXR0ICA8YWxlY2Zs
ZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVycm9yIGNvZGVzLCBwaGFz
ZSB0d28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
NjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8t
ZHVwbGljYXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
YmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoY3JlYXRlT2JqZWN0U3RvcmUudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAg
IChjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChwb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzOgorICAg
ICAgICAoYWRkTW9yZURhdGFGYWlsZWQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanM6CisgICAgICAgIChhZGRBZ2FpbkZhaWx1cmUp
OgorCiAyMDEyLTA2LTA4ICBRaSBaaGFuZyAgPHFpLjIuemhhbmdAbm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF0gZmFzdC92aWV3cG9ydC92aWV3cG9ydC0xMzMuaHRtbCBmYWlscwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0
ZWQudHh0CmluZGV4IDNhZDllMDkyZWJkOTI5MmQ1MzdiNjM0M2U3NTk5ZmQ3OGU0MDc2NmQuLjBj
NDIzNWEzMzYxYWY2OWU2MDdkOWJiMDhkN2ExMjliNjUxNTFmNTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50
eHQKQEAgLTEwLDcgKzEwLDE0IEBAIG9wZW5TdWNjZXNzKCk6CiBkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKIERlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCit0cmFucyA9IHJlcXVlc3QucmVzdWx0CiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitOb3cgY3JlYXRlIHRoZSBpbmRleGVzLgorb2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQ
YXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25z
KTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFb
aV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordHJhbnMgPSBkYi50cmFuc2FjdGlv
bihvYmplY3RTdG9yZU5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCiBGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUg
b2JqZWN0IHN0b3JlLgogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFb
aV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwpA
QCAtMjUsMTEgKzMyLDYgQEAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURh
dGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkp
OwogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9i
amVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RT
dG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwotTm93IGNyZWF0ZSB0
aGUgaW5kZXhlcy4KLW9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBp
bmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwotb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRl
eERhdGFbaV0ub3B0aW9ucyk7Ci1vYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0u
bmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKLXRlc3RB
bGwoKQogdGVzdFNpbXBsZSgpCiB0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFt
ZSkKIHN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS1leHBlY3RlZC50
eHQKaW5kZXggZmIxMDdmYTZiN2U5NDJhNjdjMjQ1NjliZGFiYTFjMDNlYWY5YzA5MS4uMmI3ZTk2
NDJlOWJkNThlMTc5Y2E3ZTJiNWIyMWM4NGJmNzFjMjYzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUtZXhwZWN0ZWQudHh0CkBAIC0y
MSw4ICsyMSw4IEBAIGFkZE1vcmVEYXRhKCk6CiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnYmFyJykKIGFkZE1vcmVEYXRhRmFpbGVkKCk6CiBldmVudC5wcmV2
ZW50RGVmYXVsdCgpCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0YWJhc2VF
eGNlcHRpb24uQ09OU1RSQUlOVF9FUlIKLVBBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMg
J0NvbnN0cmFpbnRFcnJvcicKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAn
RGF0YUVycm9yJwogdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAwfSwg
J2ZvbycpCiBjaGFuZ2VEYXRhU3VjY2VzcygpOgogdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEp
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dAppbmRl
eCBiNzgwNWYxZmFhNDVhN2E5ZDhkZGUyOTY2YjdhZWM3ZjNiZWM4MzE3Li42OTBkOGFlNTBhYzlm
MGJkNzZlYmFiMTI3ZTU4YjQwN2Y0ZDU0ZGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApAQCAtMTgsNiArMTgsNyBAQCBvcGVuU3VjY2Vzcygp
OgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAogb2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogRmlyc3Qs
IGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4KIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5
KTsKQEAgLTMzLDYgKzM0LDggQEAgTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4KIG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5k
ZXhEYXRhW2ldLm9wdGlvbnMpOwogb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ld
Lm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CiBvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBh
dGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVOYW1lLCAncmVhZHdyaXRlJykKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKQogdGVzdFByZXYoKQogdHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpCiBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKaW5kZXggOGE5NjM4N2Jk
ZWE4NjlmMjJkMDEzYjNhYmU2YWZmMjIxZDE2ZWNhZi4uNDVhMTZjOTRiOWI5NGJjNzYyYTU4OWZk
NTk3YWI4ZDMyZWM5NzA5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApA
QCAtNzgsMTYgKzc4LDE2IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICBdOwogCiAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAotZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0KQog
ewogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAKKyAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0KICAg
ICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsK
ICAgICBhZGRlZERhdGEgPSAwOwogICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKQEAg
LTEwMCw2ICsxMDAsMTEgQEAgZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
CiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVj
dFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworICAgICAgICB0ZXN0
UHJldigpOworICAgIH0KIH0KIAogZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCkBAIC0xMDgsOSAr
MTEzLDYgQEAgZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCiAgICAgZm9yIChpIGluIGluZGV4RGF0
YSkgewogICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRh
W2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7
CiAgICAgfQotCi0KLSAgICB0ZXN0UHJldigpOwogfQogCiBmdW5jdGlvbiB0ZXN0UHJldigpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA0OGQyZmE2NTU0ZTlkMDc5MjMxYmZmNWQ5Njcz
YzZhNjdiZTZjNjNlLi5iZTA2YmJlYTM2ZjdkZWQ4MzNiZGY4ZGZmYjZiN2UxYTVjYzhmMmUyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTk2LDggKzk2LDggQEAgYWRkU3VjY2Vzcygp
OgogUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCiBldmVudC50YXJnZXQuc291cmNl
LmFkZCh7eDogJ2Zvbyd9LCAnenp6JykKIGFkZEFnYWluRmFpbHVyZSgpOgotUEFTUyBldmVudC50
YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCi1Q
QVNTIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlzICdDb25zdHJhaW50RXJyb3InCitQQVNTIGV2
ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1BB
U1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMgJ0RhdGFFcnJvcicKIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCkKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sICdyZWFkd3JpdGUnKQogc3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCA1OGVkZGUwNGFiODZlMzRiNDU0MmU3ZDQ4
YjMxYzMyYWM2YjZlZTIyLi4yYjZlZGIwMGRiMjNlZmNmNGMwOWM4ZDUwZGE3NjA5ZTgxNWY4ODAw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC05Nyw4ICs5
Nyw4IEBAIFBBU1MgW1dvcmtlcl0gY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIK
IFBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5IgogW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICdmb28nfSwgJ3p6eicpCiBbV29ya2VyXSBhZGRBZ2Fp
bkZhaWx1cmUoKToKLVBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUgotUEFTUyBbV29ya2VyXSBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJworUEFTUyBbV29ya2VyXSBldmVudC50
YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitQQVNTIFtX
b3JrZXJdIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlzICdEYXRhRXJyb3InCiBbV29ya2VyXSBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpCiBbV29ya2VyXSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFt
ZSddLCAncmVhZHdyaXRlJykKIFtXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMKaW5kZXggZmZhOTMzODlmYjRmM2M5YTVh
Yzk0ZTY2NTBkNTJhOWE3ODUwMjMzZS4uZmY5MWRhYTRlZmM4ODBkNTY3NDRhNGFkYWFlODU3NDQ2
MTk0ZTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2N1cnNvci1hZHZhbmNlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcwpAQCAtNDQsMjQgKzQ0LDMyIEBAIGZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKICAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKIAogICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CiAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmUoKQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdCkKIHsK
ICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCisgICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7
CisgICAgY3JlYXRlSW5kZXhlcygpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9y
ZU5hbWUsICdyZWFkd3JpdGUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgICAgICAgcG9wdWxhdGVP
YmplY3RTdG9yZSgpOworICAgIH07Cit9CiAKK2Z1bmN0aW9uIHBvcHVsYXRlT2JqZWN0U3RvcmUo
KQorewogICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0
b3JlLiIpOwogICAgIGFkZGVkRGF0YSA9IDA7CiAgICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0
YSkgewogICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIp
OwogICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKICAg
ICB9Ci0gICAgY3JlYXRlSW5kZXhlcygpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEFs
bDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RTaW1wbGU7CiB9CiAKIGZ1bmN0aW9uIGNy
ZWF0ZUluZGV4ZXMoKQpAQCAtMTQwLDExICsxNDgsNiBAQCBmdW5jdGlvbiBydW5UZXN0KGN1cnNv
ciwgZXhwZWN0ZWRWYWx1ZSkKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4cGVjdGVkIiwg
SlNPTi5zdHJpbmdpZnkoc2ltcGxpZnlDdXJzb3IoY3Vyc29yKSkpOwogfQogCi1mdW5jdGlvbiB0
ZXN0QWxsKCkKLXsKLSAgICBkZWJ1ZygidGVzdEFsbCgpIik7Ci0gICAgdGVzdFNpbXBsZSgpOwot
fQogCiBmdW5jdGlvbiB0ZXN0U2ltcGxlKCkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzCmluZGV4IDNhMmUzNjFm
YzU2ZDBkMWY4ZTlkZWEzM2RmMTg4YTI0OGU2NDRkNWUuLmFjNWExNzQwYzMxOTFmZDljN2UwM2Nk
MTA1M2JiYTAzYzU4ODAyNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAtNjUsOCArNjUsOCBAQCBmdW5j
dGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgpCiAgICAgLy8gRG9uJ3QgYWJvcnQgdGhlIHRyYW5zYWN0
aW9uLgogICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKIAotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNP
TlNUUkFJTlRfRVJSIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvci5uYW1lIiwg
IidDb25zdHJhaW50RXJyb3InIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNv
ZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yLm5hbWUiLCAiJ0RhdGFFcnJvciciKTsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgJ2ZvbycgZW50cnkgaW4gb2JqZWN0IHN0b3JlLCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4K
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykucHV0KHt4OiAwfSwgJ2ZvbycpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcwppbmRleCA1
Y2ZmNDI5OGQyMzdiNWYyMDUyOWIzZDdlYzRlZjVhZDJhNmUxZmQxLi5hNzE4NmE2MjFhNTJmMDU0
NTVhY2Y5MmU5ZTBjYmE3NDRmNzg2Y2YxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMKQEAg
LTE3NSw4ICsxNzUsOCBAQCBmdW5jdGlvbiBhZGRBZ2FpbkZhaWx1cmUoZXZ0KQogewogICAgIGV2
ZW50ID0gZXZ0OwogICAgIGRlYnVnKCJhZGRBZ2FpbkZhaWx1cmUoKToiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJB
SU5UX0VSUiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3IubmFtZSIsICInQ29u
c3RyYWludEVycm9yJyIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5lcnJvci5uYW1lIiwgIidEYXRhRXJyb3InIik7CiAKICAgICBldmFsQW5kTG9nKCJldmVu
dC5wcmV2ZW50RGVmYXVsdCgpIik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146899</attachid>
            <date>2012-06-11 13:54:44 -0700</date>
            <delta_ts>2012-06-11 16:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88690-20120611135444.patch</filename>
            <type>text/plain</type>
            <size>28542</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uMDdmYWM3NDczNzJiMDJlMjc1Yzg4OWIzNjZhOThl
NDQ3N2M5N2Y5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVy
cm9yIGNvZGVzLCBwaGFzZSB0d28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4NjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRoZSBuZXh0IHBoYXNlIG9mIEluZGV4ZWREQiBlcnJvciBjb2Rl
cyB0byBtYXRjaCB0aGUgc3BlYy4KKyAgICAgICAgVGhpcyB1cGRhdGUgaXMgbW9zdGx5IGZvY3Vz
ZWQgb24gREFUQV9FUlIgdnMgQ09OU1RSQUlOVF9FUlIuCisKKyAgICAgICAgQWxzbyBtb3ZlcyBz
b21lIG9mIHRoZSBlcnJvciBjaGVja2luZyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1vZGUKKyAgICAg
ICAgaW50byB0aGUgZnJvbnRlbmQgYW5kIHJlcGxhY2VzIHRoZSBiYWNrZW5kIGNoZWNrcyB3aXRo
IGFzc2VydHMsIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIGNvbnNvbGlkYXRlIGVycm9yIGNoZWNr
aW5nIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyBhIGZldyBGSVhN
RSdzIHRoYXQgYXJlIG5vIGxvbmdlciB0cnVlIChhYm91dCAKKyAgICAgICAgSS9PIGVycm9ycyAt
IHRoZSBzcGVjIHdhcyB1cGRhdGVkIGFuZCBvdXIgaW1wbGVtZW50YXRpb24gd2FzCisgICAgICAg
IGFscmVhZHkgY29ycmVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IGNvdmVyIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y2xlYXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVudW1Nb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisKIDIwMTIt
MDYtMTEgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5pbmdAbm9raWEuY29tPgogCiAg
ICAgICAgIFtRdF1bV0syXSBDb21wdXRlIGFuZCBzZXQgY2FjaGUgY2FwYWNpdGllcyB1c2luZyB0
aGUgY3VycmVudCBDYWNoZU1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAppbmRleCBiNjI0YTM1OTY4NTcyZTAyODczMGRhNTY2ZWIwNGE1Zjgy
NGFmZDk2Li4wNDM5ODYzNGNiMjA1YTUwMGQyZWUyODg4YWRjNTcxY2FlY2I3MzAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTIwNSw2
ICsyMDUsMTEgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmRlbGV0ZSIp
OworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5lbnVtTW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFtX2dvdFZhbHVlKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggZTFkNzFkYTIyMTRk
NmRmNjZkYzA1Y2M2YTM0MGUyMzdiNmUzMDdkMS4uZWI3M2UwYzMyZGUzMjg4YzI4MDA1NzRiODA1
NDc3ODcxOTY0ODA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMTYzLDYgKzE2Myw4IEBAIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUi
KTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpS
RUFEX09OTFkpOworCiAgICAgaWYgKCFtX2N1cnNvciB8fCBtX2N1cnNvclR5cGUgPT0gSW5kZXhL
ZXlDdXJzb3IpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4
IGFkYTg1YzE4MDE0NDk4ZjE1ZjQwMDQ2MGM3NTYwMzFkOTMyOTNlN2MuLjQ0MjlhNzgyZmVmMGE0
MWMzZDZlNmY2Yzc3YzMzMmE2YzVkNmU5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0y
NDksNyArMjQ5LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWYKICAgICBpbnQ2NF90IGRhdGFi
YXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKICAgICBkYXRhYmFzZS0+bV92ZXJzaW9uID0gdmVyc2lv
bjsKICAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV92ZXJzaW9uKSkgewotICAgICAgICAvLyBG
SVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFu
IGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAx
MDlhNzUxNWY4NzU4M2EyNzZhNTIyMmVjMGJlYmI5Y2I0OTYzMWYwLi4yZmQ0ZmU2Y2U4ZDZjN2E0
NzQxOGVmYWRkYmJjNGYwMzhlNDBhYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xMTgsNiArMTE4LDExIEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjphZGQiKTsK
KyAgICBpZiAobV90cmFuc2FjdGlvbi0+ZW51bU1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVB
RF9PTkxZKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlw
ZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE0Miw2ICsxNDcsMTEg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OnB1
dCIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5lbnVtTW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpSRUFEX09OTFkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9P
TkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGtleSAmJiAoa2V5
LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2LDYgKzE3
NiwxMSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlmICht
X3RyYW5zYWN0aW9uLT5lbnVtTW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFrZXlSYW5nZSkgewogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
ODMsNiArMTk4LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRl
bGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpkZWxldGUiKTsKKyAgICBpZiAobV90
cmFuc2FjdGlvbi0+ZW51bU1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgha2V5IHx8ICFrZXktPmlzVmFsaWQoKSkgewog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMDAsNiArMjIwLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklE
Qk9iamVjdFN0b3JlOjpjbGVhciIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5lbnVtTW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFj
a2VuZC0+Y2xlYXIocmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAg
aWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDFiMzk2MzA2MDEzNDk2
MjgxMGNjODg0MDcxMTljMDc5NmUxZWZjNGQuLjJhZjhhYmRmOTYyYTkyMDQwYmNhZDY4NWNmN2E1
ZWM4MmExZGQwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xNDIsMTAgKzE0
Miw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0S2V5
SW50b0tleVBhdGgoUGFzc1JlZlB0cjxJREJLZXk+CiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBh
c3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQiKTsKLSAgICBpZiAodHJhbnNhY3Rpb25QdHItPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7Ci0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisK
KyAgICBBU1NFUlQodHJhbnNhY3Rpb25QdHItPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVB
RF9PTkxZKTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RT
dG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBw
cnBWYWx1ZTsKQEAgLTI0MCw3ICsyMzgsNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAg
ICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlQWZ0ZXJJbmplY3Rpb24pIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXNldEF1dG9JbmNyZW1lbnRLZXlDYWNoZSgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2tzIGluIHB1dCgpIGVuc3VyZSB0aGlzIHNo
b3VsZCBvbmx5IGhhcHBlbiBpZiBJL08gZXJyb3Igb2NjdXJzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBu
b3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvciBpbnNl
cnRpbmcgZ2VuZXJhdGVkIGtleSBpbnRvIHRoZSBvYmplY3QuIikpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzgsNyArMjc1LDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAgICAgICBpZiAoKCFpbmRleC0+bXVsdGlF
bnRyeSgpIHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJheVR5cGUpICYmICFpbmRl
eC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS5nZXQoKSwga2V5LmdldCgpKSkgewogICAgICAg
ICAgICAgb2JqZWN0U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCk7Ci0gICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk9uZSBvZiB0aGUgZGVyaXZlZCAoZnJvbSBh
IGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRvZXMgbm90IHNhdGlzZnkgaXRzIHVuaXF1ZW5l
c3MgcmVxdWlyZW1lbnRzLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSLCAiT25l
IG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5cyBmb3IgYW4gaW5kZXggZG9lcyBu
b3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4Niw3ICsyODMsNyBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPAogICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGluZGV4S2V5LT5hcnJh
eSgpLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbmRleC0+YWRkaW5nS2V5
QWxsb3dlZChpbmRleEtleS0+YXJyYXkoKVtqXS5nZXQoKSwga2V5LmdldCgpKSkgewogICAgICAg
ICAgICAgICAgICAgICBvYmplY3RTdG9yZS0+cmVzZXRBdXRvSW5jcmVtZW50S2V5Q2FjaGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJPbmUgb2YgdGhl
IGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRleCBkb2VzIG5vdCBzYXRp
c2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkg
a2V5cyBmb3IgYW4gaW5kZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJl
bWVudHMuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMjk4LDcgKzI5NSw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8CiAgICAgLy8gQmVmb3JlIHRoaXMgcG9pbnQsIGRvbid0IGRvIGFueSBtdXRhdGlvbi4gIEFm
dGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9mIGVycm9y
LgogCiAgICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dE9iamVjdFN0b3Jl
UmVjb3JkKG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5
LCB2YWx1ZS0+dG9XaXJlU3RyaW5nKCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90
IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KICAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2Uu
IikpOwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzExLDcgKzMwNyw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgICBjb250
aW51ZTsgLy8gVGhlIGluZGV4IG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLCBidXQgZG9lcyBub3Qg
ZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHlldC4KIAogICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5i
YWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgcmVjb3JkSWRlbnRpZmll
ci5nZXQoKSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBz
cGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9P
IGVycm9ycy4KICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGlu
ZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzIzLDcgKzMxOCw2IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8CiAKICAgICAgICAgaWYgKCFpbmRleC0+bXVsdGlFbnRyeSgpIHx8IGlu
ZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJheVR5cGUpIHsKICAgICAgICAgICAgIGlmICgh
b2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5wdXRJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0
U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCAqaW5k
ZXhLZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBl
cnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAgICAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIp
KTsKICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zMzMsNyArMzI3LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAg
ICAgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IElEQktleTo6QXJyYXlUeXBlKTsK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXktPmFycmF5KCkuc2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3Rv
cmUoKS0+cHV0SW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9i
amVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgKmluZGV4S2V5LT5hcnJheSgpW2pdLCByZWNv
cmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhl
IEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNv
ZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM2NCwxMCArMzU3LDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNz
UmUKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpSRUFEX09OTFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorCisgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKICAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAg
IFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKQEAgLTQwOSwxMCAr
NDAwLDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhciIp
OwotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09O
TFkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAxY2ViZTljMTkzZDkyN2JjMTU5
NjI2N2ViNzM1NjhiNzFmYjU5ZTcyLi42MDM5NGVhNzBkYzFmOTQyNTg5ZmFiNGM1ODc1MDdkNmNm
NTJlMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNGaW5pc2hl
ZCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgc2hvcnQgZW51bU1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICBJREJEYXRh
YmFzZSogZGIoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvcihFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMmY5YzJiYTg0MTJhMjlkYjlmOTYzY2JlYmQx
Y2U1NmFlYTczYmQyNC4uNGVhM2JmZDQzNzEzYWRkNDlhODE3NzcxNDRkMTYyNWNkMTZkMWVmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwogCiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1f
b2JqZWN0U3RvcmVOYW1lczsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgbV9tb2RlOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkMjJmZTM5ZTVm
ODc1ZWRkZjdmZjJkY2Q4ZjhkZWZkMDViYTBmZjkuLmEzMjcwNGYxMGQzZmU2Y2Q0YTY4Yjg5MTEz
MzI4ZDNkNjQ5ZWE0ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wNi0wOCAgQWxlYyBG
bGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBFcnJv
ciBjb2RlcywgcGhhc2UgdHdvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODY5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxp
Y2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9p
bmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qczoKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlLnRyYW5zLm9uY29tcGxl
dGUpOgorICAgICAgICAoY3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAocG9wdWxhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVu
aXF1ZS5qczoKKyAgICAgICAgKGFkZE1vcmVEYXRhRmFpbGVkKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzOgorICAgICAgICAoYWRk
QWdhaW5GYWlsdXJlKToKKwogMjAxMi0wNi0xMSAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5AaW5m
LnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gR2FyZGVuaW5nLCBza2lwIG5ldyBmYWlsaW5n
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWFkdmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDNhZDllMDkyZWJkOTI5MmQ1MzdiNjM0M2U3
NTk5ZmQ3OGU0MDc2NmQuLjBjNDIzNWEzMzYxYWY2OWU2MDdkOWJiMDhkN2ExMjliNjUxNTFmNTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
YWR2YW5jZS1leHBlY3RlZC50eHQKQEAgLTEwLDcgKzEwLDE0IEBAIG9wZW5TdWNjZXNzKCk6CiBk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKIERl
bGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCit0cmFucyA9IHJlcXVlc3QucmVzdWx0CiBvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitOb3cgY3JlYXRl
IHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUs
IGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGlu
ZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtp
XS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordHJh
bnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdyZWFkd3JpdGUnKQorb2JqZWN0
U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCiBGaXJzdCwgYWRkIGFs
bCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLgogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOwpAQCAtMjUsMTEgKzMyLDYgQEAgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwog
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVj
dFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9y
ZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5r
ZXkpOwotTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4KLW9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGlu
ZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlv
bnMpOwotb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0
YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Ci1vYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtp
XS5vcHRpb25zKTsKLXRlc3RBbGwoKQogdGVzdFNpbXBsZSgpCiB0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSkKIHN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
dW5pcXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LXVuaXF1ZS1leHBlY3RlZC50eHQKaW5kZXggZmIxMDdmYTZiN2U5NDJhNjdjMjQ1NjliZGFiYTFj
MDNlYWY5YzA5MS4uMmI3ZTk2NDJlOWJkNThlMTc5Y2E3ZTJiNWIyMWM4NGJmNzFjMjYzYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUt
ZXhwZWN0ZWQudHh0CkBAIC0yMSw4ICsyMSw4IEBAIGFkZE1vcmVEYXRhKCk6CiB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmFyJykKIGFkZE1vcmVEYXRhRmFp
bGVkKCk6CiBldmVudC5wcmV2ZW50RGVmYXVsdCgpCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJvckNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIKLVBBU1MgZXZlbnQudGFy
Z2V0LmVycm9yLm5hbWUgaXMgJ0NvbnN0cmFpbnRFcnJvcicKK1BBU1MgZXZlbnQudGFyZ2V0LmVy
cm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSBpcyAnRGF0YUVycm9yJwogdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykucHV0KHt4OiAwfSwgJ2ZvbycpCiBjaGFuZ2VEYXRhU3VjY2VzcygpOgogdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJREJLZXlS
YW5nZS5sb3dlckJvdW5kKDEpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRl
LWV4cGVjdGVkLnR4dAppbmRleCBiNzgwNWYxZmFhNDVhN2E5ZDhkZGUyOTY2YjdhZWM3ZjNiZWM4
MzE3Li42OTBkOGFlNTBhYzlmMGJkNzZlYmFiMTI3ZTU4YjQwN2Y0ZDU0ZGJkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVw
bGljYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApAQCAtMTgsNiArMTgs
NyBAQCBvcGVuU3VjY2VzcygpOgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiByZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgordHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdAogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOwogRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4K
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmpl
Y3RTdG9yZURhdGFbaV0ua2V5KTsKQEAgLTMzLDYgKzM0LDggQEAgTm93IGNyZWF0ZSB0aGUgaW5k
ZXhlcy4KIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERh
dGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwogb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFb
aV0ub3B0aW9ucyk7CiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwg
aW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCAncmVhZHdyaXRlJykKK29iamVjdFN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQogdGVzdFByZXYoKQogdHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCiBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0
bWwKaW5kZXggOGE5NjM4N2JkZWE4NjlmMjJkMDEzYjNhYmU2YWZmMjIxZDE2ZWNhZi4uNDVhMTZj
OTRiOWI5NGJjNzYyYTU4OWZkNTk3YWI4ZDMyZWM5NzA5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1u
by1kdXBsaWNhdGUuaHRtbApAQCAtNzgsMTYgKzc4LDE2IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKICAgICBdOwogCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsK
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAotZnVu
Y3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCitmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RTdG9yZShyZXF1ZXN0KQogewogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSk7Iik7Ci0KICAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhl
IG9iamVjdCBzdG9yZS4iKTsKICAgICBhZGRlZERhdGEgPSAwOwogICAgIGZvciAoaSBpbiBvYmpl
Y3RTdG9yZURhdGEpIHsKQEAgLTEwMCw2ICsxMDAsMTEgQEAgZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpIik7CisgICAgICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KSIpOworICAgICAgICB0ZXN0UHJldigpOworICAgIH0KIH0KIAogZnVuY3Rpb24gY3JlYXRlSW5k
ZXhlcygpCkBAIC0xMDgsOSArMTEzLDYgQEAgZnVuY3Rpb24gY3JlYXRlSW5kZXhlcygpCiAgICAg
Zm9yIChpIGluIGluZGV4RGF0YSkgewogICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERh
dGFbaV0ub3B0aW9ucyk7Iik7CiAgICAgfQotCi0KLSAgICB0ZXN0UHJldigpOwogfQogCiBmdW5j
dGlvbiB0ZXN0UHJldigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA0OGQyZmE2NTU0
ZTlkMDc5MjMxYmZmNWQ5NjczYzZhNjdiZTZjNjNlLi5iZTA2YmJlYTM2ZjdkZWQ4MzNiZGY4ZGZm
YjZiN2UxYTVjYzhmMmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTk2LDggKzk2
LDggQEAgYWRkU3VjY2VzcygpOgogUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzICJrZXkiCiBl
dmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ2Zvbyd9LCAnenp6JykKIGFkZEFnYWluRmFpbHVy
ZSgpOgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkNPTlNUUkFJTlRfRVJSCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlzICdDb25zdHJh
aW50RXJyb3InCitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMgJ0RhdGFFcnJv
cicKIGV2ZW50LnByZXZlbnREZWZhdWx0KCkKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
ICdyZWFkd3JpdGUnKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRleCA1OGVkZGUw
NGFiODZlMzRiNDU0MmU3ZDQ4YjMxYzMyYWM2YjZlZTIyLi4yYjZlZGIwMGRiMjNlZmNmNGMwOWM4
ZDUwZGE3NjA5ZTgxNWY4ODAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0
ZWQudHh0CkBAIC05Nyw4ICs5Nyw4IEBAIFBBU1MgW1dvcmtlcl0gY29kZSBpcyBET01FeGNlcHRp
b24uREFUQV9DTE9ORV9FUlIKIFBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAi
a2V5IgogW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICdmb28nfSwgJ3p6eicp
CiBbV29ya2VyXSBhZGRBZ2FpbkZhaWx1cmUoKToKLVBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0
LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUgotUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJworUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlzICdEYXRh
RXJyb3InCiBbV29ya2VyXSBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiBbV29ya2VyXSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCAncmVhZHdyaXRlJykKIFtXb3JrZXJdIHN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMKaW5kZXgg
ZmZhOTMzODlmYjRmM2M5YTVhYzk0ZTY2NTBkNTJhOWE3ODUwMjMzZS4uZmY5MWRhYTRlZmM4ODBk
NTY3NDRhNGFkYWFlODU3NDQ2MTk0ZTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcwpAQCAtNDQsMjQg
KzQ0LDMyIEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICBvYmplY3RTdG9yZU5hbWUgPSAi
UGVvcGxlIjsKIAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CiAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKLWZ1bmN0
aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0
U3RvcmUocmVxdWVzdCkKIHsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCisgICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSk7Iik7CisgICAgY3JlYXRlSW5kZXhlcygpOworICAgIHRyYW5zLm9uY29t
cGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdyZWFkd3JpdGUnKSIpOworICAgICAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsK
KyAgICAgICAgcG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH07Cit9CiAKK2Z1bmN0aW9uIHBv
cHVsYXRlT2JqZWN0U3RvcmUoKQorewogICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0
YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwogICAgIGFkZGVkRGF0YSA9IDA7CiAgICAgZm9yIChp
IGluIG9iamVjdFN0b3JlRGF0YSkgewogICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0
b3JlRGF0YVtpXS5rZXkpOyIpOwogICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKICAgICB9Ci0gICAgY3JlYXRlSW5kZXhlcygpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEFsbDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RTaW1wbGU7
CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQpAQCAtMTQwLDExICsxNDgsNiBAQCBmdW5j
dGlvbiBydW5UZXN0KGN1cnNvciwgZXhwZWN0ZWRWYWx1ZSkKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV4cGVjdGVkIiwgSlNPTi5zdHJpbmdpZnkoc2ltcGxpZnlDdXJzb3IoY3Vyc29yKSkp
OwogfQogCi1mdW5jdGlvbiB0ZXN0QWxsKCkKLXsKLSAgICBkZWJ1ZygidGVzdEFsbCgpIik7Ci0g
ICAgdGVzdFNpbXBsZSgpOwotfQogCiBmdW5jdGlvbiB0ZXN0U2ltcGxlKCkKIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVl
LmpzCmluZGV4IDNhMmUzNjFmYzU2ZDBkMWY4ZTlkZWEzM2RmMTg4YTI0OGU2NDRkNWUuLmFjNWEx
NzQwYzMxOTFmZDljN2UwM2NkMTA1M2JiYTAzYzU4ODAyNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAt
NjUsOCArNjUsOCBAQCBmdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgpCiAgICAgLy8gRG9uJ3Qg
YWJvcnQgdGhlIHRyYW5zYWN0aW9uLgogICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZh
dWx0KCkiKTsKIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5lcnJvci5uYW1lIiwgIidDb25zdHJhaW50RXJyb3InIik7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUiLCAiJ0RhdGFFcnJvciciKTsK
IAogICAgIC8vIFVwZGF0ZSB0aGUgJ2ZvbycgZW50cnkgaW4gb2JqZWN0IHN0b3JlLCBjaGFuZ2lu
ZyB0aGUgdmFsdWUgb2YgeC4KICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAwfSwgJ2ZvbycpIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNz
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWJhc2ljcy5qcwppbmRleCA1Y2ZmNDI5OGQyMzdiNWYyMDUyOWIzZDdlYzRlZjVhZDJhNmUxZmQx
Li5hNzE4NmE2MjFhNTJmMDU0NTVhY2Y5MmU5ZTBjYmE3NDRmNzg2Y2YxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNz
LmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3Rz
dG9yZS1iYXNpY3MuanMKQEAgLTE3NSw4ICsxNzUsOCBAQCBmdW5jdGlvbiBhZGRBZ2FpbkZhaWx1
cmUoZXZ0KQogewogICAgIGV2ZW50ID0gZXZ0OwogICAgIGRlYnVnKCJhZGRBZ2FpbkZhaWx1cmUo
KToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
ZXJyb3IubmFtZSIsICInQ29uc3RyYWludEVycm9yJyIpOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvci5uYW1lIiwgIidEYXRhRXJyb3InIik7CiAKICAg
ICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146955</attachid>
            <date>2012-06-11 16:25:56 -0700</date>
            <delta_ts>2012-06-12 11:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88690-20120611162555.patch</filename>
            <type>text/plain</type>
            <size>28380</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmMTY5MjllNGZiNWZj
ZThkOWU4YzA0MjJkNGYxMmI4Y2M4M2ZmYS4uNzUxMWM2MzExYTkzNzg3MmZhNjQ1MTgzM2RkYWNm
OWQxYWUzNDEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVy
cm9yIGNvZGVzLCBwaGFzZSB0d28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4NjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRoZSBuZXh0IHBoYXNlIG9mIEluZGV4ZWREQiBlcnJvciBjb2Rl
cyB0byBtYXRjaCB0aGUgc3BlYy4KKyAgICAgICAgVGhpcyB1cGRhdGUgaXMgbW9zdGx5IGZvY3Vz
ZWQgb24gREFUQV9FUlIgdnMgQ09OU1RSQUlOVF9FUlIuCisKKyAgICAgICAgQWxzbyBtb3ZlcyBz
b21lIG9mIHRoZSBlcnJvciBjaGVja2luZyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1vZGUKKyAgICAg
ICAgaW50byB0aGUgZnJvbnRlbmQgYW5kIHJlcGxhY2VzIHRoZSBiYWNrZW5kIGNoZWNrcyB3aXRo
IGFzc2VydHMsIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIGNvbnNvbGlkYXRlIGVycm9yIGNoZWNr
aW5nIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyBhIGZldyBGSVhN
RSdzIHRoYXQgYXJlIG5vIGxvbmdlciB0cnVlIChhYm91dCAKKyAgICAgICAgSS9PIGVycm9ycyAt
IHRoZSBzcGVjIHdhcyB1cGRhdGVkIGFuZCBvdXIgaW1wbGVtZW50YXRpb24gd2FzCisgICAgICAg
IGFscmVhZHkgY29ycmVjdCkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IGNvdmVyIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y2xlYXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVudW1Nb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisKIDIwMTIt
MDYtMTEgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5pbmdAbm9raWEuY29tPgogCiAg
ICAgICAgIFtRdF1bV0syXSBDb21wdXRlIGFuZCBzZXQgY2FjaGUgY2FwYWNpdGllcyB1c2luZyB0
aGUgY3VycmVudCBDYWNoZU1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAppbmRleCBiNjI0YTM1OTY4NTcyZTAyODczMGRhNTY2ZWIwNGE1Zjgy
NGFmZDk2Li5mYzc5Mzc1MGMxOTI5NzZjMTg4MTMxN2JlZjQ5NjRjZWU4NzNjMmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTIwNSw2
ICsyMDUsMTEgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmRlbGV0ZSIp
OworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgaWYgKCFtX2dvdFZhbHVlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggZTFkNzFkYTIyMTRkNmRmNjZkYzA1Y2M2YTM0MGUyMzdiNmUzMDdk
MS4uZWI3M2UwYzMyZGUzMjg4YzI4MDA1NzRiODA1NDc3ODcxOTY0ODA5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcApAQCAtMTYzLDYgKzE2Myw4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNv
bnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlv
bi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworCiAgICAgaWYgKCFtX2N1
cnNvciB8fCBtX2N1cnNvclR5cGUgPT0gSW5kZXhLZXlDdXJzb3IpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IGFkYTg1YzE4MDE0NDk4ZjE1ZjQwMDQ2MGM3
NTYwMzFkOTMyOTNlN2MuLjQ0MjlhNzgyZmVmMGE0MWMzZDZlNmY2Yzc3YzMzMmE2YzVkNmU5N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yNDksNyArMjQ5LDYgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWYKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKICAg
ICBkYXRhYmFzZS0+bV92ZXJzaW9uID0gdmVyc2lvbjsKICAgICBpZiAoIWRhdGFiYXNlLT5tX2Jh
Y2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShkYXRhYmFzZUlkLCBkYXRhYmFz
ZS0+bV92ZXJzaW9uKSkgewotICAgICAgICAvLyBGSVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ug
c3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkv
TyBlcnJvcnMuCiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBk
YXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAxMDlhNzUxNWY4NzU4M2EyNzZhNTIyMmVjMGJl
YmI5Y2I0OTYzMWYwLi5lNmI5NGEyYWY1Mzg5NDAxNDE2MDZiMTY3ZmIzMGFhNjEwYTAzNGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCkBAIC0xMTgsNiArMTE4LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVl
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlOjphZGQiKTsKKyAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNS
ZWFkT25seSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05M
WV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChrZXkgJiYgKGtleS0+
dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE0Miw2ICsxNDcs
MTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6
OnB1dCIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZh
bGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2LDYgKzE3NiwxMSBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5
KCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFrZXlSYW5nZSkgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xODMsNiArMTk4LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpkZWxldGUiKTsKKyAgICBp
ZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwog
ICAgIGlmICgha2V5IHx8ICFrZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDAsNiArMjIw
LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjbGVhciIp
OworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fYmFja2VuZC0+Y2xlYXIocmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDFiMzk2
MzA2MDEzNDk2MjgxMGNjODg0MDcxMTljMDc5NmUxZWZjNGQuLjJhZjhhYmRmOTYyYTkyMDQwYmNh
ZDY4NWNmN2E1ZWM4MmExZGQwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0x
NDIsMTAgKzE0Miw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aW5qZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0cjxJREJLZXk+CiB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJw
VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQiKTsKLSAgICBpZiAodHJhbnNhY3Rp
b25QdHItPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisKKyAgICBBU1NFUlQodHJhbnNhY3Rpb25QdHItPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbjo6UkVBRF9PTkxZKTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUgPSBwcnBWYWx1ZTsKQEAgLTI0MCw3ICsyMzgsNiBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPAogICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlQWZ0ZXJJbmplY3Rpb24pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXNldEF1dG9JbmNyZW1lbnRLZXlD
YWNoZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2tzIGluIHB1dCgpIGVuc3Vy
ZSB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiBJL08gZXJyb3Igb2NjdXJzLgotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRp
b24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgog
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBl
cnJvciBpbnNlcnRpbmcgZ2VuZXJhdGVkIGtleSBpbnRvIHRoZSBvYmplY3QuIikpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzgs
NyArMjc1LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAgICAgICBpZiAoKCFpbmRl
eC0+bXVsdGlFbnRyeSgpIHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJheVR5cGUp
ICYmICFpbmRleC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS5nZXQoKSwga2V5LmdldCgpKSkg
ewogICAgICAgICAgICAgb2JqZWN0U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCk7
Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk9uZSBvZiB0aGUgZGVyaXZl
ZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRvZXMgbm90IHNhdGlzZnkgaXRz
IHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5cyBmb3IgYW4gaW5k
ZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4Niw3ICsyODMsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPAogICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGluZGV4
S2V5LT5hcnJheSgpLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbmRleC0+
YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS0+YXJyYXkoKVtqXS5nZXQoKSwga2V5LmdldCgpKSkg
ewogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS0+cmVzZXRBdXRvSW5jcmVtZW50S2V5
Q2FjaGUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJP
bmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRleCBkb2Vz
IG5vdCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CisgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEg
a2V5UGF0aCkga2V5cyBmb3IgYW4gaW5kZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVz
cyByZXF1aXJlbWVudHMuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjk4LDcgKzI5NSw2IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8CiAgICAgLy8gQmVmb3JlIHRoaXMgcG9pbnQsIGRvbid0IGRvIGFueSBtdXRh
dGlvbi4gIEFmdGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNl
IG9mIGVycm9yLgogCiAgICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dE9i
amVjdFN0b3JlUmVjb3JkKG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5p
ZCgpLCAqa2V5LCB2YWx1ZS0+dG9XaXJlU3RyaW5nKCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9u
IGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxl
IHN0b3JhZ2UuIikpOwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzExLDcgKzMwNyw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gVGhlIGluZGV4IG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLCBidXQg
ZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHlldC4KIAogICAgICAgICBpZiAoIW9iamVj
dFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0
b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgcmVjb3Jk
SWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBE
YXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0
ZWQgdG8gSS9PIGVycm9ycy4KICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJy
b3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAgICAgICAgICAgIHRyYW5z
YWN0aW9uLT5hYm9ydCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzIzLDcgKzMxOCw2IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKICAgICAgICAgaWYgKCFpbmRleC0+bXVsdGlFbnRy
eSgpIHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJheVR5cGUpIHsKICAgICAgICAg
ICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5wdXRJbmRleERhdGFGb3JSZWNv
cmQob2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5p
ZCgpLCAqaW5kZXhLZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3Qg
aGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAgICAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBz
dG9yYWdlLiIpKTsKICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMzMsNyArMzI3LDYgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjwKICAgICAgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IElEQktleTo6QXJy
YXlUeXBlKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXktPmFy
cmF5KCkuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5i
YWNraW5nU3RvcmUoKS0+cHV0SW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5kYXRhYmFz
ZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgKmluZGV4S2V5LT5hcnJheSgp
W2pdLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFu
IGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9y
YWdlLiIpKTsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2NCwxMCArMzU3LDggQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJw
S2V5LCBQYXNzUmUKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorCisgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7
CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0
aGlzOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKQEAg
LTQwOSwxMCArNDAwLDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjbGVhciIpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpSRUFEX09OTFkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9P
TkxZX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKworICAgIEFTU0VSVCh0cmFuc2FjdGlv
bi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAxY2ViZTljMTkz
ZDkyN2JjMTU5NjI2N2ViNzM1NjhiNzFmYjU5ZTcyLi5iNTI5NTk2Y2IyMDEwMTA3YWM5MzBjNDU1
ZmI3MTAzZjQ3OTEwZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNGaW5pc2hlZCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsg
fTsKICAgICBJREJEYXRhYmFzZSogZGIoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTUVycm9y
PiBlcnJvcihFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBzZXRFcnJvcihQYXNzUmVm
UHRyPERPTUVycm9yPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMmY5YzJiYTg0MTJh
MjlkYjlmOTYzY2JlYmQxY2U1NmFlYTczYmQyNC4uNGVhM2JmZDQzNzEzYWRkNDlhODE3NzcxNDRk
MTYyNWNkMTZkMWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNzYsNyArNzYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwogCiAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG1fb2JqZWN0U3RvcmVOYW1lczsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX21v
ZGU7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOwogCiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDBkMjJmZTM5ZTVmODc1ZWRkZjdmZjJkY2Q4ZjhkZWZkMDViYTBmZjkuLmEzMjcwNGYxMGQz
ZmU2Y2Q0YTY4Yjg5MTEzMzI4ZDNkNjQ5ZWE0ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAx
Mi0wNi0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5kZXhlZERCOiBFcnJvciBjb2RlcywgcGhhc2UgdHdvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODY5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFu
Y2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2YW5j
ZS5qczoKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3Jl
LnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoY3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAocG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2luZGV4LXVuaXF1ZS5qczoKKyAgICAgICAgKGFkZE1vcmVEYXRhRmFpbGVkKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpz
OgorICAgICAgICAoYWRkQWdhaW5GYWlsdXJlKToKKwogMjAxMi0wNi0xMSAgU3ppbGFyZCBMZWRh
biAgPHN6bGVkYW5AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gR2FyZGVuaW5nLCBz
a2lwIG5ldyBmYWlsaW5nIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDNhZDllMDkyZWJk
OTI5MmQ1MzdiNjM0M2U3NTk5ZmQ3OGU0MDc2NmQuLjBjNDIzNWEzMzYxYWY2OWU2MDdkOWJiMDhk
N2ExMjliNjUxNTFmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1hZHZhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3RlZC50eHQKQEAgLTEwLDcgKzEwLDE0IEBAIG9w
ZW5TdWNjZXNzKCk6CiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIHJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCit0cmFucyA9IHJlcXVlc3Qu
cmVzdWx0CiBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSk7CitOb3cgY3JlYXRlIHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5k
ZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9u
cyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRh
W2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ld
Lm9wdGlvbnMpOwordHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdyZWFk
d3JpdGUnKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUp
CiBGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLgogcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0
YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0u
dmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwpAQCAtMjUsMTEgKzMyLDYgQEAgcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3Jl
RGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFb
aV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwogcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOwog
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUsIG9iamVj
dFN0b3JlRGF0YVtpXS5rZXkpOwotTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4KLW9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5k
ZXhEYXRhW2ldLm9wdGlvbnMpOwotb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ld
Lm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Ci1vYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBh
dGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKLXRlc3RBbGwoKQogdGVzdFNpbXBsZSgpCiB0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkKIHN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LXVuaXF1ZS1leHBlY3RlZC50eHQKaW5kZXggZmIxMDdmYTZiN2U5NDJh
NjdjMjQ1NjliZGFiYTFjMDNlYWY5YzA5MS4uMmI3ZTk2NDJlOWJkNThlMTc5Y2E3ZTJiNWIyMWM4
NGJmNzFjMjYzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtdW5pcXVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC11bmlxdWUtZXhwZWN0ZWQudHh0CkBAIC0yMSw4ICsyMSw4IEBAIGFkZE1vcmVEYXRh
KCk6CiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmFyJykK
IGFkZE1vcmVEYXRhRmFpbGVkKCk6CiBldmVudC5wcmV2ZW50RGVmYXVsdCgpCi1QQVNTIGV2ZW50
LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIK
LVBBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMgJ0NvbnN0cmFpbnRFcnJvcicKK1BBU1Mg
ZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgor
UEFTUyBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAnRGF0YUVycm9yJwogdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAwfSwgJ2ZvbycpCiBjaGFuZ2VEYXRhU3VjY2Vz
cygpOgogdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3Bl
bkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXBy
ZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dAppbmRleCBiNzgwNWYxZmFhNDVhN2E5ZDhkZGUy
OTY2YjdhZWM3ZjNiZWM4MzE3Li42OTBkOGFlNTBhYzlmMGJkNzZlYmFiMTI3ZTU4YjQwN2Y0ZDU0
ZGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2lu
ZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4
dApAQCAtMTgsNiArMTgsNyBAQCBvcGVuU3VjY2VzcygpOgogZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CiByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCiBEZWxldGVkIGFsbCBvYmplY3Qgc3Rv
cmVzLgordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhl
IG9iamVjdCBzdG9yZS4KIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKQEAgLTMzLDYgKzM0LDggQEAgTm93
IGNyZWF0ZSB0aGUgaW5kZXhlcy4KIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtp
XS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwogb2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQ
YXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25z
KTsKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCAncmVhZHdyaXRlJykK
K29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQogdGVzdFBy
ZXYoKQogdHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpCiBvYmplY3RTdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYt
bm8tZHVwbGljYXRlLmh0bWwKaW5kZXggOGE5NjM4N2JkZWE4NjlmMjJkMDEzYjNhYmU2YWZmMjIx
ZDE2ZWNhZi4uN2E3YjY0MjBhNDVmZjVhYjY4MjFiNmRjNDM2YmRiNmVlNGRjZGQ1NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5v
LWR1cGxpY2F0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApAQCAtNzgsMTYgKzc4LDE2IEBAIGZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKICAgICBdOwogCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVPYmplY3RTdG9yZTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKIH0KIAotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCitmdW5j
dGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCiB7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKIAorICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKICAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKTsiKTsKLQogICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0
YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwogICAgIGFkZGVkRGF0YSA9IDA7CiAgICAgZm9yIChp
IGluIG9iamVjdFN0b3JlRGF0YSkgewpAQCAtMTAwLDYgKzEwMCwxMSBAQCBmdW5jdGlvbiBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKICAgICAgICAgfQogICAgICAgfQogICAgIH0KKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCAncmVhZHdyaXRlJykiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpIik7CisgICAgICAgIHRlc3RQcmV2KCk7CisgICAgfTsKIH0KIAogZnVuY3Rpb24g
Y3JlYXRlSW5kZXhlcygpCkBAIC0xMDgsOSArMTEzLDYgQEAgZnVuY3Rpb24gY3JlYXRlSW5kZXhl
cygpCiAgICAgZm9yIChpIGluIGluZGV4RGF0YSkgewogICAgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRo
LCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7CiAgICAgfQotCi0KLSAgICB0ZXN0UHJldigpOwog
fQogCiBmdW5jdGlvbiB0ZXN0UHJldigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA0
OGQyZmE2NTU0ZTlkMDc5MjMxYmZmNWQ5NjczYzZhNjdiZTZjNjNlLi5iZTA2YmJlYTM2ZjdkZWQ4
MzNiZGY4ZGZmYjZiN2UxYTVjYzhmMmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAg
LTk2LDggKzk2LDggQEAgYWRkU3VjY2VzcygpOgogUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlz
ICJrZXkiCiBldmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ2Zvbyd9LCAnenp6JykKIGFkZEFn
YWluRmFpbHVyZSgpOgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNl
RXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlz
ICdDb25zdHJhaW50RXJyb3InCitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMgSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMg
J0RhdGFFcnJvcicKIGV2ZW50LnByZXZlbnREZWZhdWx0KCkKIGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sICdyZWFkd3JpdGUnKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dAppbmRl
eCA1OGVkZGUwNGFiODZlMzRiNDU0MmU3ZDQ4YjMxYzMyYWM2YjZlZTIyLi4yYjZlZGIwMGRiMjNl
ZmNmNGMwOWM4ZDUwZGE3NjA5ZTgxNWY4ODAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXdvcmtl
cnMtZXhwZWN0ZWQudHh0CkBAIC05Nyw4ICs5Nyw4IEBAIFBBU1MgW1dvcmtlcl0gY29kZSBpcyBE
T01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKIFBBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnJl
c3VsdCBpcyAia2V5IgogW1dvcmtlcl0gZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICdmb28n
fSwgJ3p6eicpCiBbV29ya2VyXSBhZGRBZ2FpbkZhaWx1cmUoKToKLVBBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UgotUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVy
cm9yJworUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5lcnJvci5uYW1l
IGlzICdEYXRhRXJyb3InCiBbV29ya2VyXSBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiBbV29ya2Vy
XSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCAncmVhZHdyaXRlJykKIFtXb3JrZXJdIHN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2Uu
anMKaW5kZXggZmZhOTMzODlmYjRmM2M5YTVhYzk0ZTY2NTBkNTJhOWE3ODUwMjMzZS4uZmY5MWRh
YTRlZmM4ODBkNTY3NDRhNGFkYWFlODU3NDQ2MTk0ZTliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcwpA
QCAtNDQsMjQgKzQ0LDMyIEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICBvYmplY3RTdG9y
ZU5hbWUgPSAiUGVvcGxlIjsKIAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0
U3RvcmU7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9
CiAKLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQorZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0U3RvcmUocmVxdWVzdCkKIHsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAgY3JlYXRlSW5kZXhlcygpOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsICdyZWFkd3JpdGUnKSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSkiKTsKKyAgICAgICAgcG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH07Cit9CiAKK2Z1
bmN0aW9uIHBvcHVsYXRlT2JqZWN0U3RvcmUoKQorewogICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFs
bCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwogICAgIGFkZGVkRGF0YSA9IDA7CiAg
ICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgewogICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0udmFsdWUs
IG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOwogICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKICAgICB9Ci0gICAgY3JlYXRlSW5kZXhlcygpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEFsbDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRl
c3RTaW1wbGU7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQpAQCAtMTQwLDExICsxNDgs
NiBAQCBmdW5jdGlvbiBydW5UZXN0KGN1cnNvciwgZXhwZWN0ZWRWYWx1ZSkKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV4cGVjdGVkIiwgSlNPTi5zdHJpbmdpZnkoc2ltcGxpZnlDdXJzb3Io
Y3Vyc29yKSkpOwogfQogCi1mdW5jdGlvbiB0ZXN0QWxsKCkKLXsKLSAgICBkZWJ1ZygidGVzdEFs
bCgpIik7Ci0gICAgdGVzdFNpbXBsZSgpOwotfQogCiBmdW5jdGlvbiB0ZXN0U2ltcGxlKCkKIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRl
eC11bmlxdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5k
ZXgtdW5pcXVlLmpzCmluZGV4IDNhMmUzNjFmYzU2ZDBkMWY4ZTlkZWEzM2RmMTg4YTI0OGU2NDRk
NWUuLmFjNWExNzQwYzMxOTFmZDljN2UwM2NkMTA1M2JiYTAzYzU4ODAyNGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1
ZS5qcwpAQCAtNjUsOCArNjUsOCBAQCBmdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgpCiAgICAg
Ly8gRG9uJ3QgYWJvcnQgdGhlIHRyYW5zYWN0aW9uLgogICAgIGV2YWxBbmRMb2coImV2ZW50LnBy
ZXZlbnREZWZhdWx0KCkiKTsKIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2Rl
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5lcnJvci5uYW1lIiwgIidDb25zdHJhaW50RXJyb3InIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUiLCAiJ0RhdGFF
cnJvciciKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgJ2ZvbycgZW50cnkgaW4gb2JqZWN0IHN0b3Jl
LCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4KICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAwfSwgJ2ZvbycpIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdHN0b3JlLWJhc2ljcy5qcwppbmRleCA1Y2ZmNDI5OGQyMzdiNWYyMDUyOWIzZDdlYzRlZjVh
ZDJhNmUxZmQxLi5hNzE4NmE2MjFhNTJmMDU0NTVhY2Y5MmU5ZTBjYmE3NDRmNzg2Y2YxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vYmplY3RzdG9yZS1iYXNpY3MuanMKQEAgLTE3NSw4ICsxNzUsOCBAQCBmdW5jdGlvbiBhZGRB
Z2FpbkZhaWx1cmUoZXZ0KQogewogICAgIGV2ZW50ID0gZXZ0OwogICAgIGRlYnVnKCJhZGRBZ2Fp
bkZhaWx1cmUoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3IubmFtZSIsICInQ29uc3RyYWludEVycm9yJyIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvci5uYW1lIiwgIidEYXRhRXJyb3In
Iik7CiAKICAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147114</attachid>
            <date>2012-06-12 11:07:17 -0700</date>
            <delta_ts>2012-06-12 13:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88690-20120612110717.patch</filename>
            <type>text/plain</type>
            <size>28414</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBmODZmY2JlMjMwZmU5
NzIzODc0M2I5NGY4OTljYzg2N2Y0NmVkNy4uNDcwNWI0NDU3MDIwOWUwNmIwY2U3ODI1ZWM4ZTQ5
NTEwZWVmN2VlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTA4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVy
cm9yIGNvZGVzLCBwaGFzZSB0d28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4NjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRoZSBuZXh0IHBoYXNlIG9mIEluZGV4ZWREQiBlcnJvciBjb2Rl
cyB0byBtYXRjaCB0aGUgc3BlYy4KKyAgICAgICAgVGhpcyB1cGRhdGUgaXMgbW9zdGx5IGZvY3Vz
ZWQgb24gREFUQV9FUlIgdnMgQ09OU1RSQUlOVF9FUlIuCisKKyAgICAgICAgQWxzbyBtb3ZlcyBz
b21lIG9mIHRoZSBlcnJvciBjaGVja2luZyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1vZGUKKyAgICAg
ICAgaW50byB0aGUgZnJvbnRlbmQgYW5kIHJlcGxhY2VzIHRoZSBiYWNrZW5kIGNoZWNrcyB3aXRo
IGFzc2VydHMsIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIGNvbnNvbGlkYXRlIGVycm9yIGNoZWNr
aW5nIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyBhIGZldyBGSVhN
RSdzIHRoYXQgYXJlIG5vIGxvbmdlciB0cnVlIChhYm91dCAKKyAgICAgICAgSS9PIGVycm9ycyAt
IHRoZSBzcGVjIHdhcyB1cGRhdGVkIGFuZCBvdXIgaW1wbGVtZW50YXRpb24gd2FzCisgICAgICAg
IGFscmVhZHkgY29ycmVjdCkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IGNvdmVyIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y2xlYXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVudW1Nb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisKIDIwMTIt
MDYtMTIgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtT
aGFkb3cgRE9NXSA8c3R5bGU+IGluc2lkZSBTaGFkb3cgc3VidHJlZSBzaG91bGQgYmUgc2NvcGVk
IGluc2lkZSB0aGUgc3VidHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCmluZGV4IGI2MjRhMzU5Njg1NzJlMDI4NzMwZGE1NjZlYjA0YTVmODI0
YWZkOTYuLmZjNzkzNzUwYzE5Mjk3NmMxODgxMzE3YmVmNDk2NGNlZTg3M2MyZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMjA1LDYg
KzIwNSwxMSBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
Q3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6ZGVsZXRlIik7
CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICBpZiAoIW1fZ290VmFsdWUpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcAppbmRleCBlMWQ3MWRhMjIxNGQ2ZGY2NmRjMDVjYzZhMzQwZTIzN2I2ZTMwN2Qx
Li5lYjczZTBjMzJkZTMyODhjMjgwMDU3NGI4MDU0Nzc4NzE5NjQ4MDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuY3BwCkBAIC0xNjMsNiArMTYzLDggQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29u
dGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgi
SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZSIpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
LT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisKICAgICBpZiAoIW1fY3Vy
c29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYWRhODVjMTgwMTQ0OThmMTVmNDAwNDYwYzc1
NjAzMWQ5MzI5M2U3Yy4uNDQyOWE3ODJmZWYwYTQxYzNkNmU2ZjZjNzdjMzMyYTZjNWQ2ZTk3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTI0OSw3ICsyNDksNiBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZgogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgpOwogICAg
IGRhdGFiYXNlLT5tX3ZlcnNpb24gPSB2ZXJzaW9uOwogICAgIGlmICghZGF0YWJhc2UtPm1fYmFj
a2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGRhdGFiYXNlSWQsIGRhdGFiYXNl
LT5tX3ZlcnNpb24pKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBz
cGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9P
IGVycm9ycy4KICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDEwOWE3NTE1Zjg3NTgzYTI3NmE1MjIyZWMwYmVi
YjljYjQ5NjMxZjAuLmU2Yjk0YTJhZjUzODk0MDE0MTYwNmIxNjdmYjMwYWE2MTBhMDM0YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKQEAgLTExOCw2ICsxMTgsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1Jl
YWRPbmx5KCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGtleSAmJiAoa2V5LT50
eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQyLDYgKzE0Nywx
MSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6
cHV0Iik7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFs
aWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjYsNiArMTc2LDExIEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHko
KSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsK
QEAgLTE4Myw2ICsxOTgsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlm
IChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgaWYgKCFrZXkgfHwgIWtleS0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIwMCw2ICsyMjAs
MTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7
CisgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVj
KTsKICAgICBpZiAoZWMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggMWIzOTYz
MDYwMTM0OTYyODEwY2M4ODQwNzExOWMwNzk2ZTFlZmM0ZC4uMmFmOGFiZGY5NjJhOTIwNDBiY2Fk
Njg1Y2Y3YTVlYzgyYTFkZDBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTE0
MiwxMCArMTQyLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBp
bmplY3RLZXlJbnRvS2V5UGF0aChQYXNzUmVmUHRyPElEQktleT4KIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBW
YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCIpOwotICAgIGlmICh0cmFuc2FjdGlv
blB0ci0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKworICAgIEFTU0VSVCh0cmFuc2FjdGlvblB0ci0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpSRUFEX09OTFkpOwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSA9IHBycFZhbHVlOwpAQCAtMjQwLDcgKzIzOCw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNh
Y2hlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVja3MgaW4gcHV0KCkgZW5zdXJl
IHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIEkvTyBlcnJvciBvY2N1cnMuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlv
biBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVy
cm9yIGluc2VydGluZyBnZW5lcmF0ZWQga2V5IGludG8gdGhlIG9iamVjdC4iKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI3OCw3
ICsyNzUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAgICAgIGlmICgoIWluZGV4
LT5tdWx0aUVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkg
JiYgIWluZGV4LT5hZGRpbmdLZXlBbGxvd2VkKGluZGV4S2V5LmdldCgpLCBrZXkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+cmVzZXRBdXRvSW5jcmVtZW50S2V5Q2FjaGUoKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVk
IChmcm9tIGEga2V5UGF0aCkga2V5cyBmb3IgYW4gaW5kZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMg
dW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlIsICJPbmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRl
eCBkb2VzIG5vdCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjg2LDcgKzI4Myw3IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhL
ZXktPmFycmF5KCkuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAoIWluZGV4LT5h
ZGRpbmdLZXlBbGxvd2VkKGluZGV4S2V5LT5hcnJheSgpW2pdLmdldCgpLCBrZXkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXNldEF1dG9JbmNyZW1lbnRLZXlD
YWNoZSgpOwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk9u
ZSBvZiB0aGUgZGVyaXZlZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRvZXMg
bm90IHNhdGlzZnkgaXRzIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJPbmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBr
ZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRleCBkb2VzIG5vdCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNz
IHJlcXVpcmVtZW50cy4iKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yOTgsNyArMjk1LDYgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjwKICAgICAvLyBCZWZvcmUgdGhpcyBwb2ludCwgZG9uJ3QgZG8gYW55IG11dGF0
aW9uLiAgQWZ0ZXIgdGhpcyBwb2ludCwgcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ug
b2YgZXJyb3IuCiAKICAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+cHV0T2Jq
ZWN0U3RvcmVSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlk
KCksICprZXksIHZhbHVlLT50b1dpcmVTdHJpbmcoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkp
IHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24g
ZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUg
c3RvcmFnZS4iKSk7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1
cm47CkBAIC0zMTEsNyArMzA3LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAg
ICAgIGNvbnRpbnVlOyAvLyBUaGUgaW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBk
b2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgeWV0LgogCiAgICAgICAgIGlmICghb2JqZWN0
U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3Rv
cmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCByZWNvcmRJ
ZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERh
dGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRl
ZCB0byBJL08gZXJyb3JzLgogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJv
ciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOwogICAgICAgICAgICAgdHJhbnNh
Y3Rpb24tPmFib3J0KCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjMsNyArMzE4LDYgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAgICAgICBpZiAoIWluZGV4LT5tdWx0aUVudHJ5
KCkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkgewogICAgICAgICAg
ICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dEluZGV4RGF0YUZvclJlY29y
ZChvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlk
KCksICppbmRleEtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBo
YXZlIGFuIGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0
b3JhZ2UuIikpOwogICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMzMyw3ICszMjcsNiBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPAogICAgICAgICAgICAgQVNTRVJUKGluZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5OjpBcnJh
eVR5cGUpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBpbmRleEtleS0+YXJy
YXkoKS5zaXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPmJh
Y2tpbmdTdG9yZSgpLT5wdXRJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNl
SWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCAqaW5kZXhLZXktPmFycmF5KClb
al0sIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4g
ZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3Jh
Z2UuIikpOwogICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzY0LDEwICszNTcsOCBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBL
ZXksIFBhc3NSZQogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpkZWxldGUiKTsKLSAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OlJFQURfT05MWV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisKKyAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsK
IAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRo
aXM7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IHBycEtleVJhbmdlOwpAQCAt
NDA5LDEwICs0MDAsOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNsZWFyIik7Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246
OlJFQURfT05MWSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09O
TFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorCisgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFjZWJlOWMxOTNk
OTI3YmMxNTk2MjY3ZWI3MzU2OGI3MWZiNTllNzIuLmJmODc4OGI3MGI3MDliNjIxYjY1MWVhNjMx
ZTVhOWIyZjdlOGIzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0ZpbmlzaGVkKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKKyAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gUkVBRF9PTkxZOyB9
CiAgICAgSURCRGF0YWJhc2UqIGRiKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01FcnJvcj4g
ZXJyb3IoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0
cjxET01FcnJvcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDJmOWMyYmE4NDEyYTI5
ZGI5Zjk2M2NiZWJkMWNlNTZhZWE3M2JkMjQuLjRlYTNiZmQ0MzcxM2FkZDQ5YTgxNzc3MTQ0ZDE2
MjVjZDE2ZDFlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBtX29iamVjdFN0b3JlTmFtZXM7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9tb2Rl
OworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IG1fbW9kZTsKIAogICAgIFN0YXRlIG1fc3RhdGU7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBkMTBlNDQ3YjI3OGUyMGU3YjI0MWQwZDFlOGNiZjY2YzFjMTUyMzFmLi43N2ZiMzg5NzhjMDll
NjU1NWQ0MmExNDg5ZWIwZjA0NDU1YjZhNTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTIt
MDYtMDggIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElu
ZGV4ZWREQjogRXJyb3IgY29kZXMsIHBoYXNlIHR3bworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgt
cHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2Uu
anM6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVPYmplY3RTdG9yZS50
cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KHBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9pbmRleC11bmlxdWUuanM6CisgICAgICAgIChhZGRNb3JlRGF0YUZhaWxlZCk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qczoK
KyAgICAgICAgKGFkZEFnYWluRmFpbHVyZSk6CisKIDIwMTItMDYtMTIgIFRha2FzaGkgU2FrYW1v
dG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtTaGFkb3cgRE9NXSA8c3R5bGU+IGlu
c2lkZSBTaGFkb3cgc3VidHJlZSBzaG91bGQgYmUgc2NvcGVkIGluc2lkZSB0aGUgc3VidHJlZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZhbmNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1hZHZh
bmNlLWV4cGVjdGVkLnR4dAppbmRleCAzYWQ5ZTA5MmViZDkyOTJkNTM3YjYzNDNlNzU5OWZkNzhl
NDA3NjZkLi4wYzQyMzVhMzM2MWFmNjllNjA3ZDliYjA4ZDdhMTI5YjY1MTUxZjU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYWR2YW5jZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWFkdmFuY2Ut
ZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCwxNCBAQCBvcGVuU3VjY2VzcygpOgogZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CiByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCiBEZWxldGVkIGFs
bCBvYmplY3Qgc3RvcmVzLgordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAogb2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworTm93IGNyZWF0ZSB0aGUgaW5k
ZXhlcy4KK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERh
dGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFb
aV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwg
aW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCAncmVhZHdyaXRlJykKK29iamVjdFN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQogRmlyc3QsIGFkZCBhbGwgb3VyIGRh
dGEgdG8gdGhlIG9iamVjdCBzdG9yZS4KIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0
U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFb
aV0ua2V5KTsKQEAgLTI1LDExICszMiw2IEBAIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2Jq
ZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURh
dGFbaV0ua2V5KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ld
LnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsKLU5v
dyBjcmVhdGUgdGhlIGluZGV4ZXMuCi1vYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFb
aV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKLW9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5
UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOwotb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5k
ZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9u
cyk7Ci10ZXN0QWxsKCkKIHRlc3RTaW1wbGUoKQogdHJhbnMgPSBkYi50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpCiBzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUt
ZXhwZWN0ZWQudHh0CmluZGV4IGZiMTA3ZmE2YjdlOTQyYTY3YzI0NTY5YmRhYmExYzAzZWFmOWMw
OTEuLjJiN2U5NjQyZTliZDU4ZTE3OWNhN2UyYjViMjFjODRiZjcxYzI2M2EgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLWV4cGVjdGVk
LnR4dApAQCAtMjEsOCArMjEsOCBAQCBhZGRNb3JlRGF0YSgpOgogdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpCiBhZGRNb3JlRGF0YUZhaWxlZCgpOgog
ZXZlbnQucHJldmVudERlZmF1bHQoKQotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElE
QkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCi1QQVNTIGV2ZW50LnRhcmdldC5lcnJv
ci5uYW1lIGlzICdDb25zdHJhaW50RXJyb3InCitQQVNTIGV2ZW50LnRhcmdldC5lcnJvckNvZGUg
aXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9y
Lm5hbWUgaXMgJ0RhdGFFcnJvcicKIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogMH0sICdmb28nKQogY2hhbmdlRGF0YVN1Y2Nlc3MoKToKIHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93
ZXJCb3VuZCgxKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3Rl
ZC50eHQKaW5kZXggYjc4MDVmMWZhYTQ1YTdhOWQ4ZGRlMjk2NmI3YWVjN2YzYmVjODMxNy4uNjkw
ZDhhZTUwYWM5ZjBiZDc2ZWJhYjEyN2U1OGI0MDdmNGQ1NGRiZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9p
bmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTE4LDYgKzE4LDcgQEAgb3Bl
blN1Y2Nlc3MoKToKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogcmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKQogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3RyYW5zID0gcmVxdWVzdC5y
ZXN1bHQKIG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsKIEZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCiByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CkBAIC0zMyw2ICszNCw4IEBAIE5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuCiBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtl
eVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGlu
ZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlv
bnMpOwogb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0
YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Cit0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkKIHRlc3RQcmV2KCkKIHRyYW5zID0gZGIudHJhbnNh
Y3Rpb24ob2JqZWN0U3RvcmVOYW1lKQogb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCmluZGV4
IDhhOTYzODdiZGVhODY5ZjIyZDAxM2IzYWJlNmFmZjIyMWQxNmVjYWYuLjdhN2I2NDIwYTQ1ZmY1
YWI2ODIxYjZkYzQzNmJkYjZlZTRkY2RkNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGlj
YXRlLmh0bWwKQEAgLTc4LDE2ICs3OCwxNiBAQCBmdW5jdGlvbiBvcGVuU3VjY2VzcygpCiAgICAg
XTsKIAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKLWZ1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQorZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUo
KQogewogICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CiAKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0K
ICAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4i
KTsKICAgICBhZGRlZERhdGEgPSAwOwogICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsK
QEAgLTEwMCw2ICsxMDAsMTEgQEAgZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSgpCiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9i
amVjdFN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworICAgICAgICB0
ZXN0UHJldigpOworICAgIH07CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQpAQCAtMTA4
LDkgKzExMyw2IEBAIGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQogICAgIGZvciAoaSBpbiBpbmRl
eERhdGEpIHsKICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4
RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMp
OyIpOwogICAgIH0KLQotCi0gICAgdGVzdFByZXYoKTsKIH0KIAogZnVuY3Rpb24gdGVzdFByZXYo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
YmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggNDhkMmZhNjU1NGU5ZDA3OTIzMWJmZjVk
OTY3M2M2YTY3YmU2YzYzZS4uYmUwNmJiZWEzNmY3ZGVkODMzYmRmOGRmZmI2YjdlMWE1Y2M4ZjJl
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
YmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC05Niw4ICs5Niw4IEBAIGFkZFN1Y2Nl
c3MoKToKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyAia2V5IgogZXZlbnQudGFyZ2V0LnNv
dXJjZS5hZGQoe3g6ICdmb28nfSwgJ3p6eicpCiBhZGRBZ2FpbkZhaWx1cmUoKToKLVBBU1MgZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UgotUEFTUyBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJworUEFT
UyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
CitQQVNTIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lIGlzICdEYXRhRXJyb3InCiBldmVudC5wcmV2
ZW50RGVmYXVsdCgpCiBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCAncmVhZHdyaXRlJykK
IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtd29ya2Vy
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1iYXNpY3Mtd29ya2Vycy1leHBlY3RlZC50eHQKaW5kZXggNThlZGRlMDRhYjg2ZTM0YjQ1NDJl
N2Q0OGIzMWMzMmFjNmI2ZWUyMi4uMmI2ZWRiMDBkYjIzZWZjZjRjMDljOGQ1MGRhNzYwOWU4MTVm
ODgwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtYmFzaWNzLXdvcmtlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtOTcs
OCArOTcsOCBAQCBQQVNTIFtXb3JrZXJdIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSCiBQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgImtleSIKIFtXb3JrZXJd
IGV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAnZm9vJ30sICd6enonKQogW1dvcmtlcl0gYWRk
QWdhaW5GYWlsdXJlKCk6Ci1QQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIKLVBBU1MgW1dvcmtlcl0gZXZlbnQu
dGFyZ2V0LmVycm9yLm5hbWUgaXMgJ0NvbnN0cmFpbnRFcnJvcicKK1BBU1MgW1dvcmtlcl0gZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFT
UyBbV29ya2VyXSBldmVudC50YXJnZXQuZXJyb3IubmFtZSBpcyAnRGF0YUVycm9yJwogW1dvcmtl
cl0gZXZlbnQucHJldmVudERlZmF1bHQoKQogW1dvcmtlcl0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZU5hbWUnXSwgJ3JlYWR3cml0ZScpCiBbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1hZHZhbmNlLmpzCmluZGV4IGZmYTkzMzg5ZmI0ZjNj
OWE1YWM5NGU2NjUwZDUyYTlhNzg1MDIzM2UuLmZmOTFkYWE0ZWZjODgwZDU2NzQ0YTRhZGFhZTg1
NzQ0NjE5NGU5YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItYWR2YW5jZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWFkdmFuY2UuanMKQEAgLTQ0LDI0ICs0NCwzMiBAQCBmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCiAgICAgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3BsZSI7CiAKICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwogICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCi1mdW5jdGlvbiBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlKCkKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3Qp
CiB7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQorICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwogICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUp
OyIpOworICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVOYW1lLCAncmVhZHdyaXRlJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7CisgICAgICAgIHBvcHVs
YXRlT2JqZWN0U3RvcmUoKTsKKyAgICB9OworfQogCitmdW5jdGlvbiBwb3B1bGF0ZU9iamVjdFN0
b3JlKCkKK3sKICAgICBkZWJ1ZygiRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVj
dCBzdG9yZS4iKTsKICAgICBhZGRlZERhdGEgPSAwOwogICAgIGZvciAoaSBpbiBvYmplY3RTdG9y
ZURhdGEpIHsKICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0ua2V5
KTsiKTsKICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CiAgICAgfQotICAgIGNyZWF0ZUluZGV4ZXMoKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRl
c3RBbGw7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0U2ltcGxlOwogfQogCiBmdW5jdGlv
biBjcmVhdGVJbmRleGVzKCkKQEAgLTE0MCwxMSArMTQ4LDYgQEAgZnVuY3Rpb24gcnVuVGVzdChj
dXJzb3IsIGV4cGVjdGVkVmFsdWUpCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJleHBlY3Rl
ZCIsIEpTT04uc3RyaW5naWZ5KHNpbXBsaWZ5Q3Vyc29yKGN1cnNvcikpKTsKIH0KIAotZnVuY3Rp
b24gdGVzdEFsbCgpCi17Ci0gICAgZGVidWcoInRlc3RBbGwoKSIpOwotICAgIHRlc3RTaW1wbGUo
KTsKLX0KIAogZnVuY3Rpb24gdGVzdFNpbXBsZSgpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwppbmRleCAzYTJl
MzYxZmM1NmQwZDFmOGU5ZGVhMzNkZjE4OGEyNDhlNjQ0ZDVlLi5hYzVhMTc0MGMzMTkxZmQ5Yzdl
MDNjZDEwNTNiYmEwM2M1ODgwMjRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKQEAgLTY1LDggKzY1LDggQEAg
ZnVuY3Rpb24gYWRkTW9yZURhdGFGYWlsZWQoKQogICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFu
c2FjdGlvbi4KICAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CiAKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5DT05TVFJBSU5UX0VSUiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3IubmFt
ZSIsICInQ29uc3RyYWludEVycm9yJyIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJy
b3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5lcnJvci5uYW1lIiwgIidEYXRhRXJyb3InIik7CiAKICAgICAvLyBVcGRh
dGUgdGhlICdmb28nIGVudHJ5IGluIG9iamVjdCBzdG9yZSwgY2hhbmdpbmcgdGhlIHZhbHVlIG9m
IHguCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpLnB1dCh7eDogMH0sICdmb28nKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1iYXNpY3MuanMKaW5k
ZXggNWNmZjQyOThkMjM3YjVmMjA1MjliM2Q3ZWM0ZWY1YWQyYTZlMWZkMS4uYTcxODZhNjIxYTUy
ZjA1NDU1YWNmOTJlOWUwY2JhNzQ0Zjc4NmNmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWJhc2ljcy5qcworKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpz
CkBAIC0xNzUsOCArMTc1LDggQEAgZnVuY3Rpb24gYWRkQWdhaW5GYWlsdXJlKGV2dCkKIHsKICAg
ICBldmVudCA9IGV2dDsKICAgICBkZWJ1ZygiYWRkQWdhaW5GYWlsdXJlKCk6Iik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09O
U1RSQUlOVF9FUlIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUiLCAi
J0NvbnN0cmFpbnRFcnJvciciKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29k
ZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3IubmFtZSIsICInRGF0YUVycm9yJyIpOwogCiAgICAgZXZhbEFuZExvZygi
ZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>