<?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>47849</bug_id>
          
          <creation_ts>2010-10-18 14:19:31 -0700</creation_ts>
          <short_desc>Dump the gesture status of frame in frame load callbacks in DumpRenderTree by adding a new method dumpUserGestureInFrameLoadCallbacks()</short_desc>
          <delta_ts>2010-10-26 00:04:23 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Johnny(Jianning) Ding">jnd</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jnd</cc>
    
    <cc>pierre.lafayette</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295747</commentid>
    <comment_count>0</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-18 14:19:31 -0700</bug_when>
    <thetext>We want to get the gesture status of main frame without JavaScript on the stack. Please refer to bug 47817 for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296942</commentid>
    <comment_count>1</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 12:44:41 -0700</bug_when>
    <thetext>I&apos;d like to add a new method called dumpUserGestureInFrameLoadCallbacks() to dump the gesture status of frame in frame load callbacks in DumpRenderTree. With this change we can know the gesture status in the frame load callbacks. 

CC to tony@chromium since he is working on the Chromium DumpRenderTree port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296943</commentid>
    <comment_count>2</comment_count>
      <attachid>71321</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 12:46:56 -0700</bug_when>
    <thetext>Created attachment 71321
patch V1

Add the dumpUserGestureInFrameLoadCallbacks method in DumpRenderTree&apos;s mac/qt/chromium ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296946</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 12:50:39 -0700</bug_when>
    <thetext>Attachment 71321 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:109:  _frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:111:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296947</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-20 12:55:10 -0700</bug_when>
    <thetext>Attachment 71321 did not build on qt:
Build output: http://queues.webkit.org/results/4639001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296961</commentid>
    <comment_count>5</comment_count>
      <attachid>71323</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 13:13:07 -0700</bug_when>
    <thetext>Created attachment 71323
patch v1 (fixed compilation error and style lint)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296969</commentid>
    <comment_count>6</comment_count>
      <attachid>71323</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-20 13:25:20 -0700</bug_when>
    <thetext>Comment on attachment 71323
patch v1 (fixed compilation error and style lint)

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

&gt; LayoutTests/ChangeLog:6
&gt; +        Set the right referent sourceURL for the script with force user gesture.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=37138

This ChangeLog entry seems unrelated to this patch.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296993</commentid>
    <comment_count>7</comment_count>
      <attachid>71323</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-20 13:45:38 -0700</bug_when>
    <thetext>Comment on attachment 71323
patch v1 (fixed compilation error and style lint)

Do we need to dump the user gesture status for every callback during loading?  Would it be sufficient to just dump it once or twice during the frame load?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297002</commentid>
    <comment_count>8</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 13:52:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 71323 [details])
&gt; Do we need to dump the user gesture status for every callback during loading?  Would it be sufficient to just dump it once or twice during the frame load?

I agree, AFAIK only the status in didStartProvisionalLoad is what we care. Maybe we can only dump gesture status in this callback. If someone is interested in the status in other frame-load callbacks, he/she can add the logic at that time.

@Adam, what&apos;s your suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297004</commentid>
    <comment_count>9</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 13:52:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This ChangeLog entry seems unrelated to this patch.  :)
Thanks:-) will drop it in new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297009</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-20 14:01:52 -0700</bug_when>
    <thetext>&gt; @Adam, what&apos;s your suggestion?

Makes sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297010</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 14:02:36 -0700</bug_when>
    <thetext>Attachment 71321 did not build on chromium:
Build output: http://queues.webkit.org/results/4627005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297054</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 14:58:28 -0700</bug_when>
    <thetext>Attachment 71323 did not build on chromium:
Build output: http://queues.webkit.org/results/4705001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297167</commentid>
    <comment_count>13</comment_count>
      <attachid>71372</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 17:32:52 -0700</bug_when>
    <thetext>Created attachment 71372
patch v2 (passed chromium compilation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297169</commentid>
    <comment_count>14</comment_count>
      <attachid>71372</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-20 17:39:57 -0700</bug_when>
    <thetext>Comment on attachment 71372
patch v2 (passed chromium compilation)

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

This looks OK to me.  Do we need to have entries for GTK+ and win in their Skipped files?

&gt; WebKitTools/DumpRenderTree/chromium/LayoutTestController.h:471
&gt; +    // If true, the test_shell will output a line of the user gesture status
&gt; +    // text for each frame load callback.

Nit: I don&apos;t think this comment is accurate anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297179</commentid>
    <comment_count>15</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 17:50:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
Thanks, Tony!
&gt; This looks OK to me.  Do we need to have entries for GTK+ and win in their Skipped files?
Yes, I guess all tests which use the dumpUserGestureInFrameLoadCallbacks need to add them in the skip list for GTK/win ports.
 
&gt; Nit: I don&apos;t think this comment is accurate anymore.
Will change before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297238</commentid>
    <comment_count>16</comment_count>
      <attachid>71392</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-20 22:51:22 -0700</bug_when>
    <thetext>Created attachment 71392
patch V2 (fixed Tony&apos;s nit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297784</commentid>
    <comment_count>17</comment_count>
      <attachid>71392</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-21 18:56:26 -0700</bug_when>
    <thetext>Comment on attachment 71392
patch V2 (fixed Tony&apos;s nit)

Rejecting patch 71392 from commit-queue.

jnd@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in WebKitTools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298355</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 01:56:40 -0700</bug_when>
    <thetext>Attachment 71392 did not build on chromium:
Build output: http://queues.webkit.org/results/4657038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298363</commentid>
    <comment_count>19</comment_count>
      <attachid>71633</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-23 03:27:32 -0700</bug_when>
    <thetext>Created attachment 71633
landing patch

(In reply to comment #18)
&gt; Build output: http://queues.webkit.org/results/4657038
fix it.  (pass compilation on mac via build-webkit --release --chromium), Since no logic changed, not to add review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298974</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-25 11:11:45 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 71633:

http/tests/websocket/tests/close-on-unload.html
http/tests/appcache/origin-quota.html

Please file bugs against the tests.  The author(s) of the test(s) are abarth@webkit.org and joepeck@webkit.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298986</commentid>
    <comment_count>21</comment_count>
      <attachid>71633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-25 11:28:12 -0700</bug_when>
    <thetext>Comment on attachment 71633
landing patch

Rejecting patch 71633 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 71633]&quot; exit_code: 1
Last 500 characters of output:
dit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=47849&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Updating working directory
Processing patch 71633 from bug 47849.
NOBODY (OOPS!) found in /Users/abarth/git/webkit-queue/WebKit/qt/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Users/abarth/git/webkit-queue/WebKit/qt/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/4617081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298989</commentid>
    <comment_count>22</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-25 11:34:02 -0700</bug_when>
    <thetext>&gt; ERROR: /Users/abarth/git/webkit-queue/WebKit/qt/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/4617081

Oops, apparently my fault. The landing patch should have a review+ flag.
Hi Tony, Adam, would any of you please add the review+ and commit‑queue+ flag to the landing patch again?
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298990</commentid>
    <comment_count>23</comment_count>
      <attachid>71633</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-25 11:34:21 -0700</bug_when>
    <thetext>Comment on attachment 71633
landing patch

Trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299010</commentid>
    <comment_count>24</comment_count>
      <attachid>71633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-25 12:03:28 -0700</bug_when>
    <thetext>Comment on attachment 71633
landing patch

Clearing flags on attachment: 71633

Committed r70470: &lt;http://trac.webkit.org/changeset/70470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299309</commentid>
    <comment_count>25</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2010-10-26 00:04:23 -0700</bug_when>
    <thetext>Patch has been landed, closing this bug.
Thanks, Tony!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71321</attachid>
            <date>2010-10-20 12:46:56 -0700</date>
            <delta_ts>2010-10-20 13:13:07 -0700</delta_ts>
            <desc>patch V1</desc>
            <filename>patch005.txt</filename>
            <type>text/plain</type>
            <size>40804</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxNjEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMjAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEdW1wIHRoZSBnZXN0dXJlIHN0YXR1cyBvZiBmcmFtZSBpbiBmcmFtZSBsb2FkIGNhbGxiYWNr
cyBpbiBEdW1wUmVuZGVyVHJlZSBieQorICAgICAgICBhZGRpbmcgYSBuZXcgbWV0aG9kIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKGRydFByaW50RnJhbWVV
c2VyR2VzdHVyZVN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5Q
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTAtMTAtMjAgIEx1aXogQWdvc3RpbmkgIDxs
dWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NjEsNiArNTYxLDExIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBGcmFt
ZUwKICAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBi
OwogfQogCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZGVyKGJvb2wgYikKK3sKKyAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gYjsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhib29sIGIpCiB7CiAgICAgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IGI7CkluZGV4OiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShy
ZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxNCBAQCBzdGF0aWMgUVN0
cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yCiAgICAgfQogfQogCitzdGF0aWMgUVN0cmlu
ZyBkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoV2ViQ29yZTo6RnJhbWUqIF9mcmFtZSkK
K3sKKyAgICBpZiAoX2ZyYW1lLT5sb2FkZXIoKS0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
KyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0
dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJ0cnVlIikpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwi
JTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKK30KKwogc3RhdGljIFFTdHJpbmcg
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYg
X3VybCkKIHsKICAgICBpZiAoX3VybC5pc0VtcHR5KCkgfHwgIV91cmwuaXNMb2NhbEZpbGUoKSkK
QEAgLTE1OSw2ICsxNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogCiBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNlOworYm9vbCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzID0g
ZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5z
TnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwpAQCAtMzE1LDYgKzMyNCw4IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRIYW4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9m
cmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVc
biIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7
CiB9CiAKIApAQCAtMzIzLDYgKzMzNCw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRSZWMKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBw
cmludGYoIiVzIC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
bV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJH
ZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBA
IC0zMzIsNiArMzQ2LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENh
bgogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMg
LSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAoZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGlu
IGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0UHJpbnRG
cmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCkBAIC0zNDEsNiArMzU4LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaFdpbGxQZQogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHBy
aW50ZigiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVzIFxuIiwgcVByaW50
YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQcmlu
dGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSkpOwogCisgICAg
aWYgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50
ZigiJXMgLSBpbiB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0XG4iLCBxUHJpbnRhYmxlKGRydFBy
aW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIApAQCAtMzUwLDYgKzM3MCw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRDaGEKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAg
ICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVcbiIsIHFQ
cmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsK
IAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAg
ICBwcmludGYoIiVzIC0gaW4gZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVcbiIs
IHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisK
ICAgICBpZiAoIW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzczLDcgKzM5Niwx
MCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUHVzCiB7CiAgICAgaWYg
KGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpc3BhdGNo
RGlkUHVzaFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAgICAgICAKKworICAgIGlmIChkdW1wVXNl
ckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4g
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlXG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJh
bWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIApAQCAtMzgxLDcgKzQwNywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkUmVwCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAg
cHJpbnRmKCIlcyAtIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50
YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAg
ICAgICAKKworICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQor
ICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdl
XG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkp
OworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApAQCAtMzg5LDcgKzQxOCwxMCBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUG9wCiB7CiAgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpc3BhdGNoRGlkUG9wU3Rh
dGVXaXRoaW5QYWdlXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KG1fZnJhbWUpKSk7Ci0gICAgICAgIAorCisgICAgaWYgKGR1bXBVc2VyR2VzdHVyZUlu
RnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBpbiBkaXNwYXRjaERp
ZFBvcFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1
cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTQw
Myw2ICs0MzUsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhCiAg
ICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1l
VXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIGlmIChtX3dlYkZyYW1lKQogICAg
ICAgICBlbWl0IG1fd2ViRnJhbWUtPnByb3Zpc2lvbmFsTG9hZCgpOwogfQpAQCAtNDEzLDYgKzQ0
OCw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWMKICAgICBpZiAo
ZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2
ZVRpdGxlOiAlc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoUVN0cmluZyh0aXRsZSkpKTsKIAorICAgIGlmIChk
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVz
IC0gaW4gZGlkUmVjZWl2ZVRpdGxlXG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2Vz
dHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTQyNSw2ICs0NjMsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ2hhCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAg
cHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAoZHVtcFVzZXJHZXN0
dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpZENo
YW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyht
X2ZyYW1lKSkpOworCiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAg
LTQzOCw2ICs0NzksOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ29t
CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBVc2VyR2VzdHVyZUlu
RnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBpbiBkaWRDb21taXRM
b2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVz
KG1fZnJhbWUpKSk7CisKICAgICBpZiAobV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSB8fCAhbV93
ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NjIsNiArNTA2LDkgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbgogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJD
YWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCht
X2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFj
a3MpCisgICAgICAgIHByaW50ZigiJXMgLSBpbiBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkp
KTsKKwogICAgIGlmIChRV2ViUGFnZVByaXZhdGU6OmRydFJ1bikgewogICAgICAgICBpbnQgdW5s
b2FkRXZlbnRDb3VudCA9IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRM
aXN0ZW5lcnMoKTsKICAgICAgICAgaWYgKHVubG9hZEV2ZW50Q291bnQpCkBAIC00ODAsNiArNTI3
LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbgogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hM
b2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVy
Q2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkRmluaXNoTG9hZEZvckZyYW1l
XG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkp
OworCiAgICAgLy8gQ2xlYXJzIHRoZSBwcmV2aW91cyBlcnJvci4KICAgICBtX2xvYWRFcnJvciA9
IFJlc291cmNlRXJyb3IoKTsKIApAQCAtMTA4Nyw2ICsxMTM3LDkgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaQogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFj
a3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
XG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJh
bWUpKSk7CiAKKyAgICBpZiAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykK
KyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3Jc
biIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7
CisKICAgICBtX2xvYWRFcnJvciA9IGVycm9yOwogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYg
IWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24o
ZXJyb3IpOwpAQCAtMTA5Nyw2ICsxMTUwLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZEZhaQogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAg
IHByaW50ZigiJXMgLSBkaWRGYWlsTG9hZFdpdGhFcnJvclxuIiwgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBp
biBkaWRGYWlsTG9hZFdpdGhFcnJvclxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdl
c3R1cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIG1fbG9hZEVycm9yID0gZXJyb3I7CiAgICAg
aWYgKCFlcnJvci5pc051bGwoKSAmJiAhZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAg
Y2FsbEVycm9yUGFnZUV4dGVuc2lvbihlcnJvcik7CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMzLDYgKzIzMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIHN0
YXRpYyBib29sIGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrczsKKyAgICBzdGF0aWMgYm9vbCBkdW1w
VXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzOwogICAgIHN0YXRpYyBib29sIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgc3RhdGljIGJvb2wgZHVtcFJlc291cmNlUmVzcG9u
c2VNSU1FVHlwZXM7CiAgICAgc3RhdGljIFFTdHJpbmcgZHVtcFJlc291cmNlTG9hZENhbGxiYWNr
c1BhdGg7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDE2MSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEwLTEwLTIwICBKb2hubnkgRGlu
ZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRHVtcCB0aGUgZ2VzdHVyZSBzdGF0dXMgb2YgZnJhbWUgaW4gZnJhbWUg
bG9hZCBjYWxsYmFja3MgaW4gRHVtcFJlbmRlclRyZWUgYnkKKyAgICAgICAgYWRkaW5nIGEgbmV3
IG1ldGhvZCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODQ5CisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoZHVtcFVzZXJH
ZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENh
bGxiYWNrcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRDYWxsYmFja3MpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZER1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6d2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZEZhaWxQcm92aXNp
b25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpkaWRGaW5pc2hEb2N1bWVudExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OmRpZEhhbmRsZU9ubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZGlkRmFpbExv
YWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJWaWV3
SG9zdDo6cHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9GcmFtZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RydF9wcmludEZy
YW1lVXNlckdlc3R1cmVTdGF0dXNdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtGcmFt
ZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAg
KC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yOmZvckZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVM
b2FkRGVsZWdhdGUgd2ViVmlldzp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGU6XSk6CisgICAg
ICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1l
Ol0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtGcmFt
ZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1l
Ol0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RUb1VSTDpkZWxheTpmaXJlRGF0ZTpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1b
RnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
Ol0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wVXNl
ckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorCiAyMDEwLTEwLTIwICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByNzAxNDkuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNiArNTEsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRy
b2xsCiAgICAgLCBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcEVk
aXRpbmdDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MoZmFs
c2UpCisgICAgLCBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGZhbHNlKQog
ICAgICwgbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUmVzb3VyY2VSZXNwb25z
ZU1JTUVUeXBlcyhmYWxzZSkKQEAgLTE2Nyw2ICsxNjgsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYg
ZHVtcEZyYW1lTG9hZENhbGxiYWNrcwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJv
bGxlci0+c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1
ZVJlZiBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwpAQCAtMTg4OSw2ICsxODk3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVz
dENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wRGF0YWJhc2VDYWxsYmFja3MiLCBkdW1wRGF0
YWJhc2VDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wRWRpdGluZ0Nh
bGxiYWNrcyIsIGR1bXBFZGl0aW5nQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiZHVtcEZyYW1lTG9hZENhbGxiYWNrcyIsIGR1bXBGcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNr
cyIsIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwg
ICAgICAgIAogICAgICAgICB7ICJkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzIiwgZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBSZXNvdXJj
ZVJlc3BvbnNlTUlNRVR5cGVzIiwgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU2VsZWN0aW9uUmVjdCIsIGR1bXBTZWxlY3Rpb25S
ZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsNiArMTU0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBkdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAg
dm9pZCBzZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgZHVtcEZyYW1lTG9hZENhbGxiYWNr
cykgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9
CisgICAgCisgICAgYm9vbCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7IH0KKyAg
ICB2b2lkIHNldER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpIHsgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1l
TG9hZENhbGxiYWNrcyA9IGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzOyB9ICAg
IAogCiAgICAgYm9vbCBkdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1
cm4gbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXREdW1wSGlz
dG9yeURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcEhpc3RvcnlEZWxlZ2F0ZUNhbGxiYWNrcykg
eyBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3MgPSBkdW1wSGlzdG9yeURlbGVnYXRlQ2Fs
bGJhY2tzOyB9CkBAIC0zMTEsNiArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcERh
dGFiYXNlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsKICAgICBi
b29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKKyAgICBib29sIG1fZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxs
YmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBt
X2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0
LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRN
ZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVt
cERhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wRWRpdGluZ0NhbGxiYWNr
cyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOwogICAgIGJp
bmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxsYmFja3MiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOworICAgIGJpbmRNZXRob2QoImR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKTsK
ICAgICBiaW5kTWV0aG9kKCJkdW1wU2VsZWN0aW9uUmVjdCIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6ZHVtcFNlbGVjdGlvblJlY3QpOwpAQCAtMjg4LDYgKzI4OSwxMiBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpkdW1wRnJhbWVMb2FkCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1
bHQpCiB7CiAgICAgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsKQEAgLTUyMiw2
ICs1MjksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAgICAgbV9kdW1w
QXNUZXh0ID0gZmFsc2U7CiAgICAgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IGZhbHNlOwogICAg
IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOworICAgIG1fZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzID0gZmFs
c2U7CiAgICAgbV9kdW1wQmFja0ZvcndhcmRMaXN0ID0gZmFsc2U7CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiAr
ODgsMTEgQEAgcHVibGljOgogICAgIC8vIGlnbm9yZXMgYW55IHRoYXQgbWF5IGJlIHByZXNlbnQu
CiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0
ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKKyAgICAvLyB1c2VyIGdlc3R1
cmUgc3RhdHVzIHRleHQgZm9yIGVhY2ggZnJhbWUgbG9hZCBjYWxsYmFjay4gIEl0IHRha2VzIG5v
CisgICAgLy8gYXJndW1lbnRzLCBhbmQgaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUgcHJlc2VudC4K
KyAgICB2b2lkIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBh
IGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBvdXQgYSB0ZXh0CiAgICAg
Ly8gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJhY2svZm9yd2FyZCBsaXN0LiAgSXQgaWdub3JlcyBh
bGwgYXJndW1lbnRzLgogICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0zNDAsNiArMzQ1LDggQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1bXBFZGl0aW5n
Q2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgeyBy
ZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXRTaG91bGREdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
ID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzKCkgeyByZXR1cm4gbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrczsg
fQorICAgIHZvaWQgc2V0U2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3Mo
Ym9vbCB2YWx1ZSkgeyBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFs
dWU7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB7cmV0dXJu
IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0U2hvdWxkRHVtcFJl
c291cmNlUmVzcG9uc2VNSU1FVHlwZXMoYm9vbCB2YWx1ZSkgeyBtX2R1bXBSZXNvdXJjZVJlc3Bv
bnNlTUlNRVR5cGVzID0gdmFsdWU7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3Bv
bnNlTUlNRVR5cGVzKCkge3JldHVybiBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOyB9
CkBAIC00NjAsNiArNDY3LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gbG9hZCBjYWxsYmFjay4KICAg
ICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKIAorICAgIC8vIElmIHRydWUsIHRoZSB0
ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgbGluZSBvZiB0aGUgdXNlciBnZXN0dXJlIHN0YXR1cwor
ICAgIC8vIHRleHQgZm9yIGVhY2ggZnJhbWUgbG9hZCBjYWxsYmFjay4KKyAgICBib29sIG1fZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7CisKICAgICAvLyBJZiB0cnVlLCB0aGUg
dGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGRlc2NyaXB0aXZlIGxpbmUgZm9yIGVhY2ggcmVzb3Vy
Y2UKICAgICAvLyBsb2FkIGNhbGxiYWNrLgogICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5
MCwxNCArNzkwLDIwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OnVuYWJsZVRvSW1wbGVtZW50UG9saWMK
IHZvaWQgV2ViVmlld0hvc3Q6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJVUkwmIGZyb20sIGNvbnN0IFdlYlVSTCYgdG8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZp
cmVfdGltZSkKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFt
ZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZy
YW1lLCAiIC0gaW4gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFxuIik7CiAgICAgaWYgKCFtX3No
ZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOworICAgIAogICAgIHByaW50ZigiIC0gd2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlcyBcbiIsIHRvLnNwZWMoKS5kYXRhKCkpOwog
fQogCisKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYkZyYW1l
KiBmcmFtZSkKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFt
ZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZy
YW1lLCAiIC0gaW4gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZVxuIik7CiAgICAgaWYg
KCFtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwpAQCAtODEzLDYgKzgxOSw4IEBA
IHZvaWQgV2ViVmlld0hvc3Q6OmRpZENyZWF0ZURhdGFTb3VyY2UoV2UKIAogdm9pZCBXZWJWaWV3
SG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQogeworICAgIGlm
IChtX3NoZWxsLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQor
ICAgICAgICBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iKTsKICAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50RnJhbWVEZXNjcmlwdGlvbihm
cmFtZSk7CiAgICAgICAgIGZwdXRzKCIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
XG4iLCBzdGRvdXQpOwpAQCAtODMxLDYgKzgzOSw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2EKIAogdm9pZCBXZWJWaWV3SG9zdDo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAobV9z
aGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAg
ICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZyYW1lLCAiIC0gaW4gZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIpOwogICAgIGlmIChtX3No
ZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJpbnRGcmFt
ZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1dHMoIiAtIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iLCBzdGRvdXQpOwpAQCAtODQwLDYg
Kzg1MCw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmUKIAogdm9p
ZCBXZWJWaWV3SG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IFdlYlVSTEVycm9yJiBlcnJvcikKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJH
ZXN0dXJlU3RhdHVzKGZyYW1lLCAiIC0gaW4gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
clxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkg
ewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygi
IC0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvclxuIiwgc3Rkb3V0KTsKQEAgLTg1Myw2
ICs4NjUsOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkCiAKIHZv
aWQgV2ViVmlld0hvc3Q6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUs
IGJvb2wgaXNOZXdOYXZpZ2F0aW9uKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wVXNl
ckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1lVXNlckdl
c3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRDb21taXRMb2FkRm9yRnJhbWVcbiIpOwogICAg
IGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAg
cHJpbnRGcmFtZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1dHMoIiAtIGRpZENvbW1p
dExvYWRGb3JGcmFtZVxuIiwgc3Rkb3V0KTsKQEAgLTg2OSw2ICs4ODMsOCBAQCB2b2lkIFdlYlZp
ZXdIb3N0OjpkaWRSZWNlaXZlVGl0bGUoV2ViRnJhCiB7CiAgICAgV2ViQ1N0cmluZyB0aXRsZTgg
PSB0aXRsZS51dGY4KCk7CiAKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3Rh
dHVzKGZyYW1lLCAiIC0gaW4gZGlkUmVjZWl2ZVRpdGxlXG4iKTsKICAgICBpZiAobV9zaGVsbC0+
c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50RnJhbWVEZXNj
cmlwdGlvbihmcmFtZSk7CiAgICAgICAgIHByaW50ZigiIC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xu
IiwgdGl0bGU4LmRhdGEoKSk7CkBAIC04ODIsNiArODk4LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6
ZGlkUmVjZWl2ZVRpdGxlKFdlYkZyYQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGaW5pc2hEb2N1
bWVudExvYWQoV2ViRnJhbWUqIGZyYW1lKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1w
VXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1lVXNl
ckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkg
ewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygi
IC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIHN0ZG91dCk7CkBAIC04OTYsNiAr
OTE0LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkKAogCiB2b2lk
IFdlYlZpZXdIb3N0OjpkaWRIYW5kbGVPbmxvYWRFdmVudHMoV2ViRnJhbWUqIGZyYW1lKQogewor
ICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNr
cygpKQorICAgICAgICBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRp
b24oZnJhbWUpOwogICAgICAgICBmcHV0cygiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWVcbiIsIHN0ZG91dCk7CkBAIC05MDQsNiArOTI0LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlk
SGFuZGxlT25sb2FkRXZlbnRzKAogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGYWlsTG9hZChXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IFdlYlVSTEVycm9yJiBlcnJvcikKIHsKKyAgICBpZiAobV9zaGVs
bC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAg
cHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZyYW1lLCAiIC0gaW4gZGlkRmFpbExvYWRXaXRo
RXJyb3JcbiIpOwogICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkpIHsKICAgICAgICAgcHJpbnRGcmFtZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1
dHMoIiAtIGRpZEZhaWxMb2FkV2l0aEVycm9yXG4iLCBzdGRvdXQpOwpAQCAtOTEzLDYgKzkzNSw4
IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiAKIAogdm9pZCBXZWJW
aWV3SG9zdDo6ZGlkRmluaXNoTG9hZChXZWJGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKG1fc2hl
bGwtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAg
IHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhmcmFtZSwgIiAtIGluIGRpZEZpbmlzaExvYWRG
b3JGcmFtZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkgewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBm
cHV0cygiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lXG4iLCBzdGRvdXQpOwpAQCAtOTMwLDYgKzk1
NCw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZE5hdmlnYXRlV2l0aGluUGFnZSgKIAogdm9pZCBX
ZWJWaWV3SG9zdDo6ZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKFdlYkZyYW1lKiBmcmFtZSkK
IHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZyYW1lLCAiIC0g
aW4gZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVcbiIpOwogICAgIGlmIChtX3No
ZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJpbnRGcmFt
ZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1dHMoIiAtIGRpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZUZvckZyYW1lXG4iLCBzdGRvdXQpOwpAQCAtMTMwNSw2ICsxMzMxLDEyIEBAIHZv
aWQgV2ViVmlld0hvc3Q6OnByaW50RnJhbWVEZXNjcmlwdGlvbigKICAgICBwcmludGYoImZyYW1l
IFwiJXNcIiIsIG5hbWU4LmNfc3RyKCkpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpwcmludEZy
YW1lVXNlckdlc3R1cmVTdGF0dXMoV2ViRnJhbWUqIHdlYmZyYW1lLCBjaGFyKiBtc2cpCit7Cisg
ICAgYm9vbCBpc1VzZXJHZXN0dXJlID0gd2ViZnJhbWUtPmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCk7CisgICAgcHJpbnRmKCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVyZSBcIiVzXCIlcyIsIGlzVXNl
ckdlc3R1cmUgPyAidHJ1ZSIgOiAiZmFsc2UiLCBtc2cpOworfQorCiB2b2lkIFdlYlZpZXdIb3N0
OjpwcmludFJlc291cmNlRGVzY3JpcHRpb24odW5zaWduZWQgaWRlbnRpZmllcikKIHsKICAgICBS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlSWRlbnRpZmllck1hcC5maW5kKGlk
ZW50aWZpZXIpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2
ICsyMjAsOSBAQCBwcml2YXRlOgogICAgIC8vIER1bXBpbmcgYSBmcmFtZSB0byB0aGUgY29uc29s
ZS4KICAgICB2b2lkIHByaW50RnJhbWVEZXNjcmlwdGlvbihXZWJLaXQ6OldlYkZyYW1lKik7CiAK
KyAgICAvLyBEdW1waW5nIHRoZSB1c2VyIGdlc3R1cmUgc3RhdHVzIHRvIHRoZSBjb25zb2xlLgor
ICAgIHZvaWQgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKFdlYktpdDo6V2ViRnJhbWUqKTsK
KwogICAgIGJvb2wgaGFzV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaW5kb3c7IH0KICAg
ICB2b2lkIHJlc2V0U2Nyb2xsUmVjdCgpOwogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgp
OwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxv
YWREZWxlZ2F0ZS5tbQkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYlNjcmlwdFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkwgKERSVEV4dHJhcykKQEAgLTg5LDYgKzkw
LDEyIEBAIC0gKE5TU3RyaW5nICopX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm8KICAgICAgICAg
ICAgIHJldHVybiBAImZyYW1lIChhbm9ueW1vdXMpIjsKICAgICB9CiB9CisKKy0gKE5TU3RyaW5n
ICopX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMKK3sKKyAgICBCT09MIGlzVXNlckdl
c3R1cmUgPSBbW3NlbGYgd2ViVmlld10gX2lzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlXTsKKyAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVy
ZSBcIiVAXCIiLCBpc1VzZXJHZXN0dXJlID8gQCJ0cnVlIiA6IEAiZmFsc2UiXTsKK30KIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIEZyYW1lTG9hZERlbGVnYXRlCkBAIC0xNDYsNyArMTUzLDEyIEBA
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTdGEKICAgICAgICAgTlNTdHJp
bmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmlu
Z10pOwogICAgIH0KLSAgICAKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJH
ZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKKyAgICB9CisKICAgICBBU1NFUlQoW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0p
OwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBvbmx5IHNldCB0aGlzIG9uY2UgcGVyIHRlc3QuICBJZiBp
dCBnZXRzIGNsZWFyZWQsIGFuZCB0aGVuIHNldCBhZ2Fpbiwgd2UgbWlnaHQKICAgICAvLyBlbmQg
dXAgZG9pbmcgdHdvIGR1bXBzIGZvciBvbmUgdGVzdC4KQEAgLTE2Niw3ICsxNzgsMTIgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZENvbQogICAgICAgICBOU1N0cmluZyAq
c3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZENvbW1pdExvYWRG
b3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07
CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0g
ICAgCisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gaW4gZGlkQ29tbWl0TG9hZEZvckZy
YW1lIiwgW2ZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzXV07CisgICAgICAg
IHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9CisKICAgICBBU1NF
UlQoIVtmcmFtZSBwcm92aXNpb25hbERhdGFTb3VyY2VdKTsKICAgICBBU1NFUlQoW2ZyYW1lIGRh
dGFTb3VyY2VdKTsKICAgICAKQEAgLTE4Miw2ICsxOTksMTEgQEAgLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGRpZEZhaQogICAgICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVU
RjhTdHJpbmddKTsKICAgICB9CiAKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5T
U3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gaW4gZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvciIsIFtmcmFtZSBfZHJ0X3ByaW50RnJhbWVVc2Vy
R2VzdHVyZVN0YXR1c11dOworICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3Ry
aW5nXSk7CisgICAgfSAgICAKKwogICAgIGlmIChbZXJyb3IgZG9tYWluXSA9PSBOU1VSTEVycm9y
RG9tYWluICYmIChbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclNlcnZlckNlcnRpZmljYXRlSGFz
VW5rbm93blJvb3QgfHwgW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JTZXJ2ZXJDZXJ0aWZpY2F0
ZVVudHJ1c3RlZCkpIHsKICAgICAgICAgLy8gPGh0dHA6Ly93ZWJraXQub3JnL2IvMzEyMDA+IElu
IG9yZGVyIHRvIHByZXZlbnQgZXh0cmEgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBsb2dnaW5nIGJlaW5n
IGdlbmVyYXRlZCBpZiB0aGUgZmlyc3QgdGVzdCB0byB1c2UgU1NMCiAgICAgICAgIC8vIGlzIHNl
dCB0byBsb2cgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBjYWxscyB3ZSBpZ25vcmUgU1NMIGNlcnRpZmlj
YXRlIGVycm9ycyBvbiBsb2NhbGhvc3QgYW5kIDEyNy4wLjAuMSBmcm9tIHdpdGhpbiBkdW1wUmVu
ZGVyVHJlZS4KQEAgLTIwNCw3ICsyMjYsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZEZpbgogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQCAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4i
LCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoIWRvbmUgJiYg
Z0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNr
cygpKSB7CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVAIC0gaW4gZGlkRmluaXNoTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfcHJpbnRG
cmFtZVVzZXJHZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5n
IFVURjhTdHJpbmddKTsKKyAgICB9ICAgCisKICAgICAvLyBGSVhNRTogVGhpcyBjYWxsIHRvIGRp
c3BsYXlJZk5lZWRlZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81MDkyMzYx
PiBpcyBmaXhlZC4KICAgICAvLyBBZnRlciB0aGF0IGlzIGZpeGVkLCB3ZSB3aWxsIHJlZW5hYmxl
IHBhaW50aW5nIGFmdGVyIFdlYkNvcmUgaXMgZG9uZSBsb2FkaW5nIHRoZSBkb2N1bWVudCwgCiAg
ICAgLy8gYW5kIHRoaXMgY2FsbCB3aWxsIG5vIGxvbmdlciBiZSBuZWVkZWQuCkBAIC0yMjAsNyAr
MjQ3LDEyIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGYWkKICAgICAg
ICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBk
aWRGYWlsTG9hZFdpdGhFcnJvciIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmdd
KTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3Ry
aW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gaW4gZGlkRmFp
bExvYWRXaXRoRXJyb3IiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNd
XTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0K
KwogICAgIEFTU0VSVCghW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0pOwogICAgIEFTU0VS
VChbZnJhbWUgZGF0YVNvdXJjZV0pOwogICAgIApAQCAtMjMzLDcgKzI2NSw3IEBAIC0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgd2luZG8KICAgICAgICAgTlNTdHJpbmcgKnN0cmlu
ZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPz8gLSB3aW5kb3dTY3JpcHRPYmplY3RB
dmFpbGFibGUiXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10p
OwogICAgIH0KLSAgICAKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0zMTQs
NyArMzQ2LDEyIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWMKICAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAg
LSBkaWRSZWNlaXZlVGl0bGU6ICVAIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHRdLCB0aXRsZV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVU
RjhTdHJpbmddKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAg
ICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0g
aW4gZGlkUmVjZWl2ZVRpdGxlIiwgW2ZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3Rh
dHVzXV07CisgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAg
ICB9CisKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVGl0bGVDaGFuZ2VzKCkp
CiAgICAgICAgIHByaW50ZigiVElUTEUgQ0hBTkdFRDogJXNcbiIsIFt0aXRsZSBVVEY4U3RyaW5n
XSk7CiB9CkBAIC0zMjUsNiArMzYyLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBkaWRSZWMKICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9
CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVXNlckdlc3R1
cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gaW4gZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNl
ckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0
cmluZ10pOworICAgIH0KIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC0z
MzMsNiArMzc1LDExIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRDaGEK
ICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAgLSBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4i
LCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7
CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAIC0gaW4gZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUiLCBbZnJhbWUgX2Ry
dF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0KIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDooTlNVUkwgKilVUkwg
ZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6KE5TRGF0ZSAqKWRhdGUgZm9y
RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKQEAgLTM0MSw2ICszODgsMTEgQEAgLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZQogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAg
ICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KKworICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0IiwgW2Zy
YW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50ZiAo
IiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCkBAIC0zNDksNiArNDAxLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBkaWRDYW4KICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lIiwg
W2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAg
cHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KKworICAgIGlmICgh
ZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2Fk
Q2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lIiwg
W2ZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50
ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQpAQCAtMzYzLDYgKzQyMCwxMSBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZGlkRmluCiAgICAgICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBV
VEY4U3RyaW5nXSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7
CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAIC0gaW4gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmlu
dEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJp
bmcgVVRGOFN0cmluZ10pOworICAgIH0KIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBA
IC0zNzEsNiArNDMzLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRI
YW4KICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSIsIFtmcmFtZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBb
c3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CisKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKSB7Cisg
ICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
IC0gaW4gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmludEZy
YW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcg
VVRGOFN0cmluZ10pOworICAgIH0KIH0KIAogLSAodm9pZCl3ZWJWaWV3RGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudDooV2ViVmlldyAqKXNlbmRlcgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlz
aW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZHVtcEZyYW1lTG9hZGVyKGZhbHNlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcihmYWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoZmFsc2UpOwogICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSk7CiAg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQo
dHJ1ZSk7CkBAIC0yNDYsNiArMjQ3LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1
bXBGcmFtZUxvYWQKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTG9hZGVy
KHRydWUpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZENhbGxiYWNrcygpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXIodHJ1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKQogewogICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKHRydWUpOwpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYs
NyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBoYW5kbGVFcnJvclBhZ2VzKCkgeyBtX2hhbmRs
ZUVycm9yUGFnZXMgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRWRpdGluZ0NhbGxiYWNrcygpOwog
ICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOworICAgIHZvaWQgZHVtcFVzZXJHZXN0
dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKTsKICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CiAgICAg
dm9pZCBkdW1wSGlzdG9yeUNhbGxiYWNrcygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzAwMjYpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0xMC0xOCAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUgcmlnaHQgcmVmZXJl
bnQgc291cmNlVVJMIGZvciB0aGUgc2NyaXB0IHdpdGggZm9yY2UgdXNlciBnZXN0dXJlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxMzgKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS13aW5kb3ctb3Blbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS13
aW5kb3ctb3Blbi5odG1sOiBBZGRlZC4KKwogMjAxMC0xMC0xOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71323</attachid>
            <date>2010-10-20 13:13:07 -0700</date>
            <delta_ts>2010-10-20 17:32:52 -0700</delta_ts>
            <desc>patch v1 (fixed compilation error and style lint)</desc>
            <filename>patch005.txt</filename>
            <type>text/plain</type>
            <size>41451</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxNjQpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMTAtMjAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEdW1wIHRoZSBnZXN0dXJlIHN0YXR1cyBvZiBmcmFtZSBpbiBmcmFtZSBsb2FkIGNhbGxiYWNr
cyBpbiBEdW1wUmVuZGVyVHJlZSBieQorICAgICAgICBhZGRpbmcgYSBuZXcgbWV0aG9kIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoZHJ0UHJpbnRGcmFtZVVzZXJH
ZXN0dXJlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkUHVzaFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlz
aExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0xMC0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
MSw2ICs1NjEsMTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTAog
ICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGI7CiB9
CiAKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkZXIoYm9vbCBiKQoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBiOworfQorCiB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGJvb2wgYikKIHsKICAgICBGcmFtZUxv
YWRlckNsaWVudFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gYjsKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShy
ZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBRU3RyaW5nIHBsYWluVGV4dChjb25zdCBRVmFyaWFudCYgcm5nKTsKIAogICAg
IHN0YXRpYyB2b2lkIGR1bXBGcmFtZUxvYWRlcihib29sIGIpOworICAgIHN0YXRpYyB2b2lkIGR1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXIoYm9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGJvb2wgYik7CiAgICAgc3RhdGljIHZvaWQgZHVtcFJlc291
cmNlUmVzcG9uc2VNSU1FVHlwZXMoYm9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKTsKSW5kZXg6IFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9u
IDcwMDI2KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEzIEBAIHN0YXRpYyBRU3RyaW5nIGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3IKICAgICB9CiB9CiAKK3N0YXRpYyBRU3RyaW5nIGRydFBy
aW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAg
aWYgKGZyYW1lLT5sb2FkZXIoKS0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAg
cmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJTFc
IiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJ0cnVlIikpOworICAgIHJldHVybiBRU3RyaW5nOjpmcm9t
TGF0aW4xKCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVyZSBcIiUxXCIiKS5hcmcoUUxhdGluMVN0cmlu
ZygiZmFsc2UiKSk7Cit9CisKIHN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OktVUkwmIF91cmwpCiB7CiAgICAgaWYgKF91cmwu
aXNFbXB0eSgpIHx8ICFfdXJsLmlzTG9jYWxGaWxlKCkpCkBAIC0xNTksNiArMTY2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIHsKIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wRnJhbWVM
b2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNlOwogYm9vbCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0ID0gZmFsc2U7
CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSBmYWxz
ZTsKQEAgLTMxNSw2ICszMjMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkSGFuCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRm
KCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAoZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAt
IGluIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydFByaW50
RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOwogfQogCiAKQEAgLTMyMyw2ICszMzMs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiAgICAgaWYgKGR1
bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAo
ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIl
cyAtIGluIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
XG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkp
OworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApAQCAtMzMyLDYgKzM0NSw5IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDYW4KICAgICBpZiAoZHVtcEZyYW1lTG9h
ZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChtX2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJD
YWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBpbiBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyht
X2ZyYW1lKSkpOworCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApAQCAtMzQxLDYgKzM1Nyw5
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsUGUKICAgICBpZiAoZHVt
cEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOiAlcyBcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHVybCkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0
dXMobV9mcmFtZSkpKTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTM1MCw2ICsz
NjksOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhCiAgICAgaWYg
KGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAoZHVtcFVzZXJHZXN0
dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpZENo
YW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydFByaW50RnJh
bWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgaWYgKCFtX3dlYkZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTM3Myw3ICszOTUsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZFB1cwogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFj
a3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2Vc
biIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFt
ZSkpKTsKLSAgICAgICAgCisKKyAgICBpZiAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNh
bGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0
aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9m
cmFtZSkpKTsKKwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTM4MSw3ICs0MDYsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlcAogewogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERp
ZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisKKyAgICBpZiAoZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGlu
IGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRQcmlu
dEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKQEAgLTM4OSw3ICs0MTcsMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZFBvcAogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAg
ICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50
YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAg
ICAgICAKKworICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQor
ICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2VcbiIs
IHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBAIC00MDMsNiArNDM0LDkgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YQogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJD
YWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KG1fZnJhbWUpKSk7CiAKKyAgICBpZiAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxi
YWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVcbiIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJh
bWUpKSk7CisKICAgICBpZiAobV93ZWJGcmFtZSkKICAgICAgICAgZW1pdCBtX3dlYkZyYW1lLT5w
cm92aXNpb25hbExvYWQoKTsKIH0KQEAgLTQxMyw2ICs0NDcsOSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVUaXRsZTogJXNcbiIsIHFQcmludGFi
bGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCBxUHJpbnRh
YmxlKFFTdHJpbmcodGl0bGUpKSk7CiAKKyAgICBpZiAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGluIGRpZFJlY2VpdmVUaXRsZVxu
IiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkpKTsK
KwogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MjUsNiArNDYy
LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYQogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRDaGFuZ2VJ
Y29uc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCht
X2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFj
a3MpCisgICAgICAgIHByaW50ZigiJXMgLSBpbiBkaWRDaGFuZ2VJY29uc1xuIiwgcVByaW50YWJs
ZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIGlmICgh
bV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MzgsNiArNDc4LDkgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENvbQogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRDb21taXRMb2FkRm9yRnJhbWVc
biIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFt
ZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQor
ICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkQ29tbWl0TG9hZEZvckZyYW1lXG4iLCBxUHJpbnRh
YmxlKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgaWYg
KG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNDYyLDYgKzUwNSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRGaW4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKIAorICAgIGlmIChk
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVz
IC0gaW4gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0UHJp
bnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisKICAgICBpZiAoUVdlYlBhZ2VQ
cml2YXRlOjpkcnRSdW4pIHsKICAgICAgICAgaW50IHVubG9hZEV2ZW50Q291bnQgPSBtX2ZyYW1l
LT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIGlm
ICh1bmxvYWRFdmVudENvdW50KQpAQCAtNDgwLDYgKzUyNiw5IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQogICAgICAgICBwcmludGYoIiVzIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKKyAg
ICBpZiAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJp
bnRmKCIlcyAtIGluIGRpZEZpbmlzaExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnRQcmlu
dEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFtZSkpKTsKKwogICAgIC8vIENsZWFycyB0aGUg
cHJldmlvdXMgZXJyb3IuCiAgICAgbV9sb2FkRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7CiAKQEAg
LTEwODcsNiArMTEzNiw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
YWkKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVz
IC0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvclxuIiwgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwogCisgICAgaWYgKGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBp
biBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yXG4iLCBxUHJpbnRhYmxlKGRydFByaW50
RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCiAgICAgbV9sb2FkRXJyb3IgPSBl
cnJvcjsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFlcnJvci5pc0NhbmNlbGxhdGlvbigp
KQogICAgICAgICBjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKGVycm9yKTsKQEAgLTEwOTcsNiArMTE0
OSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWkKICAgICBpZiAo
ZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkRmFpbExv
YWRXaXRoRXJyb3JcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVy
Q2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkRmFpbExvYWRXaXRoRXJyb3Jc
biIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7
CisKICAgICBtX2xvYWRFcnJvciA9IGVycm9yOwogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYg
IWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24o
ZXJyb3IpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3M7CisgICAgc3RhdGljIGJvb2wgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRl
ckNhbGxiYWNrczsKICAgICBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwog
ICAgIHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwogICAgIHN0YXRp
YyBRU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpJbmRleDogV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gNzAxNjQpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw2MCBAQAorMjAxMC0xMC0yMCAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1bXAgdGhl
IGdlc3R1cmUgc3RhdHVzIG9mIGZyYW1lIGluIGZyYW1lIGxvYWQgY2FsbGJhY2tzIGluIER1bXBS
ZW5kZXJUcmVlIGJ5CisgICAgICAgIGFkZGluZyBhIG5ldyBtZXRob2QgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00Nzg0OQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbGVyKToKKyAgICAgICAgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJh
Y2tzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZENhbGxiYWNrcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcFVzZXJH
ZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZENhbGxiYWNrcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJW
aWV3SG9zdDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYlZpZXdIb3N0OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpkaWRDb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OmRpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpkaWRIYW5kbGVPbmxvYWRFdmVudHMp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRpZEZhaWxMb2FkKToKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpkaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnByaW50RnJhbWVVc2VyR2Vz
dHVyZVN0YXR1cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW1dlYkZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzXSk6
CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpk
aWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdl
YlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAg
ICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6
CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbExvYWRXaXRoRXJy
b3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lu
ZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0
ZSB3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVM
b2FkRGVsZWdhdGUgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpk
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVM
b2FkRGVsZWdhdGUgd2ViVmlldzp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ZGVsYXk6
ZmlyZURhdGU6Zm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZp
ZXc6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVM
b2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTpdKToKKyAg
ICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKwogMjAxMC0xMC0yMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIExheW91dFRlc3RDb250cm9s
bGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAsIG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzKGZh
bHNlKQogICAgICwgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcEZy
YW1lTG9hZENhbGxiYWNrcyhmYWxzZSkKKyAgICAsIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3Mo
ZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBt
X2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNlKQpAQCAtMTY3LDYgKzE2OCwxMyBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1w
VXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENh
bGxiYWNrcyh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xODg5LDYgKzE4OTcsNyBAQCBKU1N0YXRp
Y0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImR1bXBEYXRhYmFz
ZUNhbGxiYWNrcyIsIGR1bXBEYXRhYmFzZUNhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImR1bXBFZGl0aW5nQ2FsbGJhY2tzIiwgZHVtcEVkaXRpbmdDYWxsYmFja3NDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIiwgZHVtcEZyYW1l
TG9hZENhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkQ2FsbGJhY2tzIiwgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFj
a3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LCAgICAgICAgCiAgICAgICAgIHsgImR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MiLCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMiLCBkdW1wUmVzb3VyY2VSZXNw
b25zZU1JTUVUeXBlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBTZWxlY3Rpb25S
ZWN0IiwgZHVtcFNlbGVjdGlvblJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lv
biA3MDAyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBGcmFtZUxv
YWRDYWxsYmFja3M7IH0KICAgICB2b2lkIHNldER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCBk
dW1wRnJhbWVMb2FkQ2FsbGJhY2tzKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGR1bXBG
cmFtZUxvYWRDYWxsYmFja3M7IH0KKyAgICAKKyAgICBib29sIGR1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1l
TG9hZENhbGxiYWNrczsgfQorICAgIHZvaWQgc2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MoYm9vbCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcykgeyBtX2R1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzID0gZHVtcFVzZXJHZXN0dXJlSW5GcmFt
ZUxvYWRDYWxsYmFja3M7IH0gICAgCiAKICAgICBib29sIGR1bXBIaXN0b3J5RGVsZWdhdGVDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3M7IH0K
ICAgICB2b2lkIHNldER1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3MoYm9vbCBkdW1wSGlzdG9y
eURlbGVnYXRlQ2FsbGJhY2tzKSB7IG1fZHVtcEhpc3RvcnlEZWxlZ2F0ZUNhbGxiYWNrcyA9IGR1
bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3M7IH0KQEAgLTMxMSw2ICszMTQsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9kdW1wRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBFZGl0
aW5nQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOworICAgIGJv
b2wgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrczsKICAgICBib29sIG1fZHVt
cEhpc3RvcnlEZWxlZ2F0ZUNhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrczsKICAgICBib29sIG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXM7CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgiZHVtcERhdGFiYXNlQ2FsbGJhY2tzIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpkdW1wRGF0YWJhc2VDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2Qo
ImR1bXBFZGl0aW5nQ2FsbGJhY2tzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1wRWRpdGlu
Z0NhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcEZyYW1lTG9hZENhbGxiYWNrcyIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEZyYW1lTG9hZENhbGxiYWNrcyk7CisgICAgYmluZE1l
dGhvZCgiZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MiLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKTsKICAgICBiaW5k
TWV0aG9kKCJkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXMpOwogICAgIGJpbmRNZXRob2QoImR1bXBTZWxlY3Rpb25SZWN0Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1wU2VsZWN0aW9uUmVjdCk7CkBAIC0yODgsNiArMjg5
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBGcmFtZUxvYWQKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJH
ZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFj
a3MgPSB0cnVlOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MgPSB0cnVlOwpAQCAtNTIyLDYgKzUyOSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlc2V0KCkKICAgICBtX2R1bXBBc1RleHQgPSBmYWxzZTsKICAgICBtX2R1bXBFZGl0aW5nQ2Fs
bGJhY2tzID0gZmFsc2U7CiAgICAgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gZmFsc2U7Cisg
ICAgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOwogICAgIG1f
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IGZhbHNlOwogICAgIG1fZHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXMgPSBmYWxzZTsKICAgICBtX2R1bXBCYWNrRm9yd2FyZExpc3QgPSBmYWxz
ZTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gaWdub3JlcyBhbnkg
dGhhdCBtYXkgYmUgcHJlc2VudC4KICAgICB2b2lkIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gVGhpcyBmdW5jdGlv
biBzZXRzIGEgZmxhZyB0aGF0IHRlbGxzIHRoZSB0ZXN0X3NoZWxsIHRvIHByaW50IGEgbGluZSBv
ZgorICAgIC8vIHVzZXIgZ2VzdHVyZSBzdGF0dXMgdGV4dCBmb3IgZWFjaCBmcmFtZSBsb2FkIGNh
bGxiYWNrLiAgSXQgdGFrZXMgbm8KKyAgICAvLyBhcmd1bWVudHMsIGFuZCBpZ25vcmVzIGFueSB0
aGF0IG1heSBiZSBwcmVzZW50LgorICAgIHZvaWQgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBzZXRzIGEgZmxhZyB0aGF0IHRlbGxzIHRoZSB0ZXN0X3NoZWxsIHRvIHBy
aW50IG91dCBhIHRleHQKICAgICAvLyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYmFjay9mb3J3YXJk
IGxpc3QuICBJdCBpZ25vcmVzIGFsbCBhcmd1bWVudHMuCiAgICAgdm9pZCBkdW1wQmFja0Zvcndh
cmRMaXN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTM0MCw2ICsz
NDUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpIHsg
cmV0dXJuIG1fZHVtcEVkaXRpbmdDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFt
ZUxvYWRDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAg
ICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkgeyBtX2R1
bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQorICAgIGJvb2wgc2hvdWxkRHVtcFVzZXJH
ZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1bXBVc2VyR2VzdHVyZUlu
RnJhbWVMb2FkQ2FsbGJhY2tzOyB9CisgICAgdm9pZCBzZXRTaG91bGREdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKSB7IG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFt
ZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpIHtyZXR1cm4gbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAg
dm9pZCBzZXRTaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhib29sIHZhbHVlKSB7
IG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hv
dWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSB7cmV0dXJuIG1fZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXM7IH0KQEAgLTQ2MCw2ICs0NjcsMTAgQEAgcHJpdmF0ZToKICAgICAv
LyBsb2FkIGNhbGxiYWNrLgogICAgIGJvb2wgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOwogCisg
ICAgLy8gSWYgdHJ1ZSwgdGhlIHRlc3Rfc2hlbGwgd2lsbCBvdXRwdXQgYSBsaW5lIG9mIHRoZSB1
c2VyIGdlc3R1cmUgc3RhdHVzCisgICAgLy8gdGV4dCBmb3IgZWFjaCBmcmFtZSBsb2FkIGNhbGxi
YWNrLgorICAgIGJvb2wgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrczsKKwog
ICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgZGVzY3JpcHRpdmUg
bGluZSBmb3IgZWFjaCByZXNvdXJjZQogICAgIC8vIGxvYWQgY2FsbGJhY2suCiAgICAgYm9vbCBt
X2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiA3MDAyNikK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzkwLDE0ICs3OTAsMjAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6dW5h
YmxlVG9JbXBsZW1lbnRQb2xpYwogdm9pZCBXZWJWaWV3SG9zdDo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlVSTCYgZnJvbSwgY29uc3QgV2ViVVJM
JiB0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IGludGVydmFsLCBkb3VibGUgZmlyZV90aW1lKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGRE
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1l
VXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
XG4iKTsKICAgICBpZiAoIW1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIHByaW50RnJhbWVEZXNjcmlwdGlvbihmcmFtZSk7CisgICAg
CiAgICAgcHJpbnRmKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVzIFxuIiwg
dG8uc3BlYygpLmRhdGEoKSk7CiB9CiAKKwogdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoV2ViRnJhbWUqIGZyYW1lKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGRE
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1l
VXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lXG4iKTsKICAgICBpZiAoIW1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHByaW50RnJhbWVEZXNjcmlwdGlvbihmcmFtZSk7
CkBAIC04MTMsNiArODE5LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ3JlYXRlRGF0YVNvdXJj
ZShXZQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChXZWJGcmFt
ZSogZnJhbWUpCiB7CisgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhm
cmFtZSwgIiAtIGluIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIpOwogICAgIGlm
IChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJp
bnRGcmFtZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1dHMoIiAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIsIHN0ZG91dCk7CkBAIC04MzEsNiArODM5LDggQEAgdm9p
ZCBXZWJWaWV3SG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYQogCiB2b2lkIFdlYlZpZXdIb3N0
OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZy
YW1lKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUs
ICIgLSBpbiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkg
ewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygi
IC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIs
IHN0ZG91dCk7CkBAIC04NDAsNiArODUwLDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZQogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQogeworICAgIGlmICht
X3NoZWxsLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAg
ICAgICBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yXG4iKTsKICAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50RnJhbWVEZXNjcmlwdGlvbihmcmFt
ZSk7CiAgICAgICAgIGZwdXRzKCIgLSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yXG4i
LCBzdGRvdXQpOwpAQCAtODUzLDYgKzg2NSw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWQKIAogdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ29tbWl0UHJvdmlzaW9uYWxM
b2FkKFdlYkZyYW1lKiBmcmFtZSwgYm9vbCBpc05ld05hdmlnYXRpb24pCiB7CisgICAgaWYgKG1f
c2hlbGwtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAg
ICAgIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhmcmFtZSwgIiAtIGluIGRpZENvbW1pdExv
YWRGb3JGcmFtZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxs
YmFja3MoKSkgewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAg
ICBmcHV0cygiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lXG4iLCBzdGRvdXQpOwpAQCAtODY5LDYg
Kzg4Myw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFJlY2VpdmVUaXRsZShXZWJGcmEKIHsKICAg
ICBXZWJDU3RyaW5nIHRpdGxlOCA9IHRpdGxlLnV0ZjgoKTsKIAorICAgIGlmIChtX3NoZWxsLT5z
aG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmlu
dEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRSZWNlaXZlVGl0bGVcbiIp
OwogICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAg
ICAgICAgcHJpbnRGcmFtZURlc2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgcHJpbnRmKCIgLSBk
aWRSZWNlaXZlVGl0bGU6ICVzXG4iLCB0aXRsZTguZGF0YSgpKTsKQEAgLTg4Miw2ICs4OTgsOCBA
QCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRSZWNlaXZlVGl0bGUoV2ViRnJhCiAKIHZvaWQgV2ViVmll
d0hvc3Q6OmRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSogZnJhbWUpCiB7CisgICAgaWYg
KG1fc2hlbGwtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisg
ICAgICAgIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhmcmFtZSwgIiAtIGluIGRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lXG4iKTsKICAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50RnJhbWVEZXNjcmlwdGlvbihmcmFt
ZSk7CiAgICAgICAgIGZwdXRzKCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIiwg
c3Rkb3V0KTsKQEAgLTg5Niw2ICs5MTQsOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGaW5pc2hE
b2N1bWVudExvYWQoCiAKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZEhhbmRsZU9ubG9hZEV2ZW50cyhX
ZWJGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0
YXR1cyhmcmFtZSwgIiAtIGluIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iKTsKICAg
ICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAg
IHByaW50RnJhbWVEZXNjcmlwdGlvbihmcmFtZSk7CiAgICAgICAgIGZwdXRzKCIgLSBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZVxuIiwgc3Rkb3V0KTsKQEAgLTkwNCw2ICs5MjQsOCBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpkaWRIYW5kbGVPbmxvYWRFdmVudHMoCiAKIHZvaWQgV2ViVmlld0hv
c3Q6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViVVJMRXJyb3ImIGVycm9y
KQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENh
bGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoZnJhbWUsICIg
LSBpbiBkaWRGYWlsTG9hZFdpdGhFcnJvclxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24o
ZnJhbWUpOwogICAgICAgICBmcHV0cygiIC0gZGlkRmFpbExvYWRXaXRoRXJyb3JcbiIsIHN0ZG91
dCk7CkBAIC05MTMsNiArOTM1LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkRmFpbExvYWQoV2Vi
RnJhbWUqIAogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiBmcmFt
ZSkKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZyYW1lLCAi
IC0gaW4gZGlkRmluaXNoTG9hZEZvckZyYW1lXG4iKTsKICAgICBpZiAobV9zaGVsbC0+c2hvdWxk
RHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50RnJhbWVEZXNjcmlwdGlv
bihmcmFtZSk7CiAgICAgICAgIGZwdXRzKCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVcbiIsIHN0
ZG91dCk7CkBAIC05MzAsNiArOTU0LDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkTmF2aWdhdGVX
aXRoaW5QYWdlKAogCiB2b2lkIFdlYlZpZXdIb3N0OjpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UoV2ViRnJhbWUqIGZyYW1lKQogeworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludEZyYW1lVXNlckdlc3R1
cmVTdGF0dXMoZnJhbWUsICIgLSBpbiBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFt
ZVxuIik7CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkg
ewogICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygi
IC0gZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVcbiIsIHN0ZG91dCk7CkBAIC0x
MzA1LDYgKzEzMzEsMTIgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cHJpbnRGcmFtZURlc2NyaXB0aW9u
KAogICAgIHByaW50ZigiZnJhbWUgXCIlc1wiIiwgbmFtZTguY19zdHIoKSk7CiB9CiAKK3ZvaWQg
V2ViVmlld0hvc3Q6OnByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJGcmFtZSogd2ViZnJh
bWUsIGNoYXIqIG1zZykKK3sKKyAgICBib29sIGlzVXNlckdlc3R1cmUgPSB3ZWJmcmFtZS0+aXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyAgICBwcmludGYoIkZyYW1lIHdpdGggdXNlciBnZXN0
dXJlIFwiJXNcIiVzIiwgaXNVc2VyR2VzdHVyZSA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1zZyk7Cit9
CisKIHZvaWQgV2ViVmlld0hvc3Q6OnByaW50UmVzb3VyY2VEZXNjcmlwdGlvbih1bnNpZ25lZCBp
ZGVudGlmaWVyKQogewogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VJ
ZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmllcik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHJldmlzaW9uIDcwMDI2KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw5IEBAIHByaXZhdGU6CiAgICAgLy8gRHVtcGluZyBh
IGZyYW1lIHRvIHRoZSBjb25zb2xlLgogICAgIHZvaWQgcHJpbnRGcmFtZURlc2NyaXB0aW9uKFdl
YktpdDo6V2ViRnJhbWUqKTsKIAorICAgIC8vIER1bXBpbmcgdGhlIHVzZXIgZ2VzdHVyZSBzdGF0
dXMgdG8gdGhlIGNvbnNvbGUuCisgICAgdm9pZCBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMo
V2ViS2l0OjpXZWJGcmFtZSopOworCiAgICAgYm9vbCBoYXNXaW5kb3coKSBjb25zdCB7IHJldHVy
biBtX2hhc1dpbmRvdzsgfQogICAgIHZvaWQgcmVzZXRTY3JvbGxSZWN0KCk7CiAgICAgdm9pZCBk
aXNjYXJkQmFja2luZ1N0b3JlKCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiA3MDAyNikKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYk5TVVJMRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogQGludGVyZmFjZSBOU1VSTCAoRFJU
RXh0cmFzKQpAQCAtODksNiArOTAsMTIgQEAgLSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9u
U3VpdGFibGVGbwogICAgICAgICAgICAgcmV0dXJuIEAiZnJhbWUgKGFub255bW91cykiOwogICAg
IH0KIH0KKworLSAoTlNTdHJpbmcgKilfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cwor
eworICAgIEJPT0wgaXNVc2VyR2VzdHVyZSA9IFtbc2VsZiB3ZWJWaWV3XSBfaXNQcm9jZXNzaW5n
VXNlckdlc3R1cmVdOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkZy
YW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJUBcIiIsIGlzVXNlckdlc3R1cmUgPyBAInRydWUiIDog
QCJmYWxzZSJdOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRnJhbWVMb2FkRGVsZWdhdGUK
QEAgLTE0Niw3ICsxNTMsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZFN0YQogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9k
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xu
IiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKCFkb25lICYm
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFj
a3MoKSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQCAtIGluIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJhbWUg
X2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNc
biIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0KKwogICAgIEFTU0VSVChbZnJhbWUgcHJv
dmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgc2V0IHRoaXMg
b25jZSBwZXIgdGVzdC4gIElmIGl0IGdldHMgY2xlYXJlZCwgYW5kIHRoZW4gc2V0IGFnYWluLCB3
ZSBtaWdodAogICAgIC8vIGVuZCB1cCBkb2luZyB0d28gZHVtcHMgZm9yIG9uZSB0ZXN0LgpAQCAt
MTY2LDcgKzE3OCwxMiBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkQ29t
CiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRG
OFN0cmluZ10pOwogICAgIH0KLSAgICAKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAg
ICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBp
biBkaWRDb21taXRMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1
cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10p
OworICAgIH0KKwogICAgIEFTU0VSVCghW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0pOwog
ICAgIEFTU0VSVChbZnJhbWUgZGF0YVNvdXJjZV0pOwogICAgIApAQCAtMTgyLDYgKzE5OSwxMSBA
QCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmFpCiAgICAgICAgIHByaW50
ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIAorICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJh
Y2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAgLSBpbiBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yIiwgW2ZyYW1l
IF9kcnRfcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50ZiAoIiVz
XG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9ICAgIAorCiAgICAgaWYgKFtlcnJvciBk
b21haW5dID09IE5TVVJMRXJyb3JEb21haW4gJiYgKFtlcnJvciBjb2RlXSA9PSBOU1VSTEVycm9y
U2VydmVyQ2VydGlmaWNhdGVIYXNVbmtub3duUm9vdCB8fCBbZXJyb3IgY29kZV0gPT0gTlNVUkxF
cnJvclNlcnZlckNlcnRpZmljYXRlVW50cnVzdGVkKSkgewogICAgICAgICAvLyA8aHR0cDovL3dl
YmtpdC5vcmcvYi8zMTIwMD4gSW4gb3JkZXIgdG8gcHJldmVudCBleHRyYSBmcmFtZSBsb2FkIGRl
bGVnYXRlIGxvZ2dpbmcgYmVpbmcgZ2VuZXJhdGVkIGlmIHRoZSBmaXJzdCB0ZXN0IHRvIHVzZSBT
U0wKICAgICAgICAgLy8gaXMgc2V0IHRvIGxvZyBmcmFtZSBsb2FkIGRlbGVnYXRlIGNhbGxzIHdl
IGlnbm9yZSBTU0wgY2VydGlmaWNhdGUgZXJyb3JzIG9uIGxvY2FsaG9zdCBhbmQgMTI3LjAuMC4x
IGZyb20gd2l0aGluIGR1bXBSZW5kZXJUcmVlLgpAQCAtMjA0LDcgKzIyNiwxMiBAQCAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluCiAgICAgICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkRmluaXNoTG9hZEZvckZy
YW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAg
ICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KLSAgICAK
KworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRGaW5pc2hMb2FkRm9yRnJhbWUi
LCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJp
bnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0gICAKKwogICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbGwgdG8gZGlzcGxheUlmTmVlZGVkIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJk
YXI6Ly9wcm9ibGVtLzUwOTIzNjE+IGlzIGZpeGVkLgogICAgIC8vIEFmdGVyIHRoYXQgaXMgZml4
ZWQsIHdlIHdpbGwgcmVlbmFibGUgcGFpbnRpbmcgYWZ0ZXIgV2ViQ29yZSBpcyBkb25lIGxvYWRp
bmcgdGhlIGRvY3VtZW50LCAKICAgICAvLyBhbmQgdGhpcyBjYWxsIHdpbGwgbm8gbG9uZ2VyIGJl
IG5lZWRlZC4KQEAgLTIyMCw3ICsyNDcsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZEZhaQogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQCAtIGRpZEZhaWxMb2FkV2l0aEVycm9yIiwgW2ZyYW1lIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KLSAgICAKKworICAgIGlmICghZG9uZSAmJiBn
TGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tz
KCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAgLSBpbiBkaWRGYWlsTG9hZFdpdGhFcnJvciIsIFtmcmFtZSBfZHJ0X3ByaW50RnJh
bWVVc2VyR2VzdHVyZVN0YXR1c11dOworICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBV
VEY4U3RyaW5nXSk7CisgICAgfQorCiAgICAgQVNTRVJUKCFbZnJhbWUgcHJvdmlzaW9uYWxEYXRh
U291cmNlXSk7CiAgICAgQVNTRVJUKFtmcmFtZSBkYXRhU291cmNlXSk7CiAgICAgCkBAIC0yMzMs
NyArMjY1LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB3aW5kbwogICAg
ICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI/PyAt
IHdpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSJdOwogICAgICAgICBwcmludGYgKCIlc1xuIiwg
W3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKQEAgLTMxNCw3ICszNDYsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGRpZFJlYwogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZFJlY2VpdmVUaXRsZTogJUAiLCBbZnJhbWUgX2RydF9k
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sIHRpdGxlXTsKICAgICAgICAgcHJpbnRm
ICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KLSAgICAKKworICAgIGlmICgh
ZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2Fk
Q2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRSZWNlaXZlVGl0bGUiLCBbZnJhbWUgX2RydF9wcmlu
dEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJp
bmcgVVRGOFN0cmluZ10pOworICAgIH0KKwogICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBUaXRsZUNoYW5nZXMoKSkKICAgICAgICAgcHJpbnRmKCJUSVRMRSBDSEFOR0VEOiAlc1xu
IiwgW3RpdGxlIFVURjhTdHJpbmddKTsKIH0KQEAgLTMyNSw2ICszNjIsMTEgQEAgLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFJlYwogICAgICAgICBOU1N0cmluZyAqc3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcg
VVRGOFN0cmluZ10pOwogICAgIH0KKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAg
TlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSIsIFtmcmFt
ZSBfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1c11dOworICAgICAgICBwcmludGYgKCIl
c1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQogfQogCiAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWU6KFdl
YkZyYW1lICopZnJhbWUKQEAgLTMzMyw2ICszNzUsMTEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZENoYQogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAg
ICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KKworICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VG
b3JGcmFtZSIsIFtmcmFtZSBfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1c11dOworICAg
ICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQogfQogCiAt
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOihOU1VSTCAqKVVSTCBkZWxheTooTlNUaW1lSW50ZXJ2YWwpc2Vjb25kcyBmaXJlRGF0
ZTooTlNEYXRlICopZGF0ZSBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpAQCAtMzQxLDYgKzM4
OCwxMSBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgd2lsbFBlCiAgICAgICAg
IE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlQCAiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sIFtVUkwgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5n
XSk7CiAgICAgfQorCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBOU1N0cmluZyAq
c3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGluIHdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNd
XTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0K
IH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKQEAgLTM0OSw2ICs0MDEsMTEgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZENhbgogICAgICAgICBOU1N0cmluZyAq
c3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7
CiAgICAgfQorCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBOU1N0cmluZyAqc3Ry
aW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGluIGRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0
dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAg
IH0KIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC0zNjMsNiArNDIwLDExIEBAIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW4KICAgICAgICAgICAgIHByaW50
ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSIsIFtmcmFtZSBfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1c11dOworICAgICAgICBw
cmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQogfQogCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6
KFdlYkZyYW1lICopZnJhbWUKQEAgLTM3MSw2ICs0MzMsMTEgQEAgLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGRpZEhhbgogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
IiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAg
ICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KKworICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSIs
IFtmcmFtZSBfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1c11dOworICAgICAgICBwcmlu
dGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQogfQogCiAtICh2b2lkKXdl
YlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50OihXZWJWaWV3ICopc2VuZGVyCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NiArNzMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpOwogICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMb2FkZXIoZmFsc2UpOworICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKGZhbHNlKTsK
ICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhm
YWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZVJlc3BvbnNl
TUlNRVR5cGVzKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKTsKQEAgLTI0Niw2ICsyNDcsMTEgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6ZHVtcEZyYW1lTG9hZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpkdW1wRnJhbWVMb2FkZXIodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkKK3sKKyAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcih0cnVlKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
CiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3ModHJ1ZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIGhhbmRsZUVy
cm9yUGFnZXMoKSB7IG1faGFuZGxlRXJyb3JQYWdlcyA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7Cisg
ICAgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgIHZvaWQg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwogICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9u
c2VNSU1FVHlwZXMoKTsKICAgICB2b2lkIGR1bXBIaXN0b3J5Q2FsbGJhY2tzKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDAyNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTE4ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHRoZSByaWdodCByZWZlcmVudCBzb3VyY2VVUkwgZm9yIHRoZSBzY3JpcHQgd2l0aCBmb3Jj
ZSB1c2VyIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNzEzOAorCisgICAgICAgICogZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9t
LXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLXdpbmRvdy1vcGVuLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEwLTE4
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71372</attachid>
            <date>2010-10-20 17:32:52 -0700</date>
            <delta_ts>2010-10-20 22:51:22 -0700</delta_ts>
            <desc>patch v2 (passed chromium compilation)</desc>
            <filename>patch005.txt</filename>
            <type>text/plain</type>
            <size>24569</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxODApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMjAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEdW1wIHRoZSBnZXN0dXJlIHN0YXR1cyBvZiBmcmFtZSBpbiBmcmFtZSBsb2FkIGNhbGxiYWNr
cyBpbiBEdW1wUmVuZGVyVHJlZQorICAgICAgICBieSBhZGRpbmcgYSBuZXcgbWV0aG9kIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzLgorICAgICAgICBOb3cgb25seSBkdW1wIHRo
ZSBnZXN0dXJlIHN0YXR1cyBpbiAiRGlkU3RhcnRQcm92aXNpb25hbExvYWQiIGNhbGxiYWNrLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRl
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgor
CiAyMDEwLTEwLTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJl
dmlzaW9uIDcwMDI2KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYxLDYgKzU2MSwxMSBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMCiAgICAgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gYjsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcihib29sIGIpCit7CisgICAg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNr
cyA9IGI7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoYm9vbCBiKQogewogICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MgPSBiOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcGxh
aW5UZXh0KGNvbnN0IFFWYXJpYW50JiBybmcpOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcEZyYW1l
TG9hZGVyKGJvb2wgYik7CisgICAgc3RhdGljIHZvaWQgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRlcihib29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
Ym9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhi
b29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoKGNv
bnN0IFFTdHJpbmcmIHBhdGgpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNiw2ICsxMDYsMTMgQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
cgogICAgIH0KIH0KIAorc3RhdGljIFFTdHJpbmcgZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3Rh
dHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5p
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxh
dGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlMVwiIikuYXJnKFFMYXRpbjFTdHJpbmco
InRydWUiKSk7CisgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNl
ciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKK30KKwogc3Rh
dGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgX3VybCkKIHsKICAgICBpZiAoX3VybC5pc0VtcHR5KCkgfHwgIV91cmwuaXNM
b2NhbEZpbGUoKSkKQEAgLTE1OSw2ICsxNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogCiBi
b29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNl
OworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVy
Q2FsbGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwpAQCAtMzE0LDcgKzMyMiw2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRIYW4KICAgICAvLyBkb24ndCBu
ZWVkIHRoaXMgb25lCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAg
cHJpbnRmKCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRhYmxl
KGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7Ci0KIH0KIAog
CkBAIC0zNzMsNyArMzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFB1cwogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBAIC0zODEsNyArMzg4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlcAogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
CkBAIC0zODksNyArMzk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFBvcAogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAgICAgICAKKwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTQwMyw2ICs0MTAsOSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
bV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFt
ZSkpKTsKKwogICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPnBy
b3Zpc2lvbmFsTG9hZCgpOwogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3M7CisgICAgc3RhdGljIGJvb2wgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRlckNhbGxiYWNrczsKICAgICBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzOwogICAgIHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVz
OwogICAgIHN0YXRpYyBRU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxODApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0xMC0yMCAgSm9obm55IERpbmcgIDxqbmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIER1bXAgdGhlIGdlc3R1cmUgc3RhdHVzIG9mIGZyYW1lIGluIGZyYW1lIGxvYWQgY2FsbGJh
Y2tzIGluIER1bXBSZW5kZXJUcmVlCisgICAgICAgIGJ5IGFkZGluZyBhIG5ldyBtZXRob2QgZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MuCisgICAgICAgIE5vdyBvbmx5IGR1bXAg
dGhlIGdlc3R1cmUgc3RhdHVzIGluICJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCIgY2FsbGJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg0OQor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAg
ICAgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJl
c2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hl
bGw6OnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJW
aWV3SG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OnByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJh
bWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcnRfcHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzXSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2Fk
RGVsZWdhdGUgd2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0Zy
YW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpm
b3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERl
bGVnYXRlIHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOl0pOgorICAgICAgICAo
LVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKwogMjAx
MC0xMC0yMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MDAyNikKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0
VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyhmYWxzZSkKICAgICAs
IG1fZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBGcmFtZUxvYWRDYWxs
YmFja3MoZmFsc2UpCisgICAgLCBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tz
KGZhbHNlKQogICAgICwgbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGZhbHNlKQogICAg
ICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKQEAgLTE2Nyw2ICsxNjgsMTMgQEAgc3RhdGljIEpT
VmFsdWVSZWYgZHVtcEZyYW1lTG9hZENhbGxiYWNrcwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3ModHJ1
ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0
aWMgSlNWYWx1ZVJlZiBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwpAQCAtMTg4OSw2ICsxODk3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wRGF0YWJhc2VDYWxsYmFja3Mi
LCBkdW1wRGF0YWJhc2VDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1w
RWRpdGluZ0NhbGxiYWNrcyIsIGR1bXBFZGl0aW5nQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiZHVtcEZyYW1lTG9hZENhbGxiYWNrcyIsIGR1bXBGcmFtZUxvYWRDYWxsYmFj
a3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZENhbGxiYWNrcyIsIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwgICAgICAgIAogICAgICAgICB7ICJkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzIiwg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1
bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzIiwgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlw
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU2VsZWN0aW9uUmVjdCIsIGR1bXBT
ZWxlY3Rpb25SZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzAwMjYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBkdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
OyB9CiAgICAgdm9pZCBzZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgZHVtcEZyYW1lTG9h
ZENhbGxiYWNrcykgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSBkdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzOyB9CisgICAgCisgICAgYm9vbCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxi
YWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFj
a3M7IH0KKyAgICB2b2lkIHNldER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGJv
b2wgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpIHsgbV9kdW1wVXNlckdlc3R1
cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJh
Y2tzOyB9ICAgIAogCiAgICAgYm9vbCBkdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBz
ZXREdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcEhpc3RvcnlEZWxlZ2F0ZUNh
bGxiYWNrcykgeyBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3MgPSBkdW1wSGlzdG9yeURl
bGVnYXRlQ2FsbGJhY2tzOyB9CkBAIC0zMTEsNiArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNr
czsKICAgICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKKyAgICBib29sIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBIaXN0b3J5RGVs
ZWdhdGVDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAg
ICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk0LDYgKzk0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAog
ICAgIGJpbmRNZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wRWRpdGlu
Z0NhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3Mp
OwogICAgIGJpbmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxsYmFja3MiLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOworICAgIGJpbmRNZXRob2QoImR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFJlc291cmNlUmVzcG9uc2VN
SU1FVHlwZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wU2VsZWN0aW9uUmVjdCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcFNlbGVjdGlvblJlY3QpOwpAQCAtMjg4LDYgKzI4OSwxMiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wRnJhbWVMb2FkCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7CiAgICAgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsK
QEAgLTUyMiw2ICs1MjksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAg
ICAgbV9kdW1wQXNUZXh0ID0gZmFsc2U7CiAgICAgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IGZh
bHNlOwogICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOworICAgIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzID0gZmFsc2U7CiAgICAgbV9kdW1wQmFja0ZvcndhcmRMaXN0ID0gZmFsc2U7CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNiArODgsMTEgQEAgcHVibGljOgogICAgIC8vIGlnbm9yZXMgYW55IHRoYXQgbWF5IGJl
IHByZXNlbnQuCiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZs
YWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKKyAgICAvLyB1
c2VyIGdlc3R1cmUgc3RhdHVzIHRleHQgZm9yIGVhY2ggZnJhbWUgbG9hZCBjYWxsYmFjay4gIEl0
IHRha2VzIG5vCisgICAgLy8gYXJndW1lbnRzLCBhbmQgaWdub3JlcyBhbnkgdGhhdCBtYXkgYmUg
cHJlc2VudC4KKyAgICB2b2lkIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIFRoaXMgZnVuY3Rp
b24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBvdXQgYSB0
ZXh0CiAgICAgLy8gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJhY2svZm9yd2FyZCBsaXN0LiAgSXQg
aWdub3JlcyBhbGwgYXJndW1lbnRzLgogICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0zNDAsNiArMzQ1LDggQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSB7IHJldHVybiBtX2R1
bXBFZGl0aW5nQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKCkgeyByZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXRT
aG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENh
bGxiYWNrczsgfQorICAgIHZvaWQgc2V0U2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MoYm9vbCB2YWx1ZSkgeyBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJh
Y2tzID0gdmFsdWU7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSB7cmV0dXJuIG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0U2hv
dWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoYm9vbCB2YWx1ZSkgeyBtX2R1bXBSZXNv
dXJjZVJlc3BvbnNlTUlNRVR5cGVzID0gdmFsdWU7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNv
dXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkge3JldHVybiBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzOyB9CkBAIC00NjAsNiArNDY3LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gbG9hZCBjYWxs
YmFjay4KICAgICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKIAorICAgIC8vIElmIHRy
dWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgbGluZSBvZiB0aGUgdXNlciBnZXN0dXJl
IHN0YXR1cworICAgIC8vIHRleHQgZm9yIGVhY2ggZnJhbWUgbG9hZCBjYWxsYmFjay4KKyAgICBi
b29sIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7CisKICAgICAvLyBJZiB0
cnVlLCB0aGUgdGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGRlc2NyaXB0aXZlIGxpbmUgZm9yIGVh
Y2ggcmVzb3VyY2UKICAgICAvLyBsb2FkIGNhbGxiYWNrLgogICAgIGJvb2wgbV9kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2
ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvY3VzKFdlYktpdDo6V2ViV2lkZ2V0
KiwgYm9vbCBlbmFibGUpOwogICAgIGJvb2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
IGNvbnN0IHsgcmV0dXJuIChtX3Rlc3RJc1ByZXBhcmluZyB8fCBtX3Rlc3RJc1BlbmRpbmcpICYm
IGxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsg
fQorICAgIGJvb2wgc2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSBj
b25zdCB7IHJldHVybiAobV90ZXN0SXNQcmVwYXJpbmcgfHwgbV90ZXN0SXNQZW5kaW5nKSAmJiBs
YXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENh
bGxiYWNrcygpOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkg
Y29uc3QgIHsgcmV0dXJuIChtX3Rlc3RJc1ByZXBhcmluZyB8fCBtX3Rlc3RJc1BlbmRpbmcpICYm
IGxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSBjb25z
dCAgeyByZXR1cm4gKG1fdGVzdElzUHJlcGFyaW5nIHx8IG1fdGVzdElzUGVuZGluZykgJiYgbGF5
b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMo
KTsgfQogICAgIHZvaWQgc2V0SXNMb2FkaW5nKGJvb2wgZmxhZykgeyBtX2lzTG9hZGluZyA9IGZs
YWc7IH0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMs
NiArODEzLDggQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ3JlYXRlRGF0YVNvdXJjZShXZQogCiB2
b2lkIFdlYlZpZXdIb3N0OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUp
CiB7CisgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzKCkpCisgICAgICAgIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhmcmFtZSwgIiAt
IGluIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVcbiIpOwogICAgIGlmIChtX3NoZWxs
LT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJpbnRGcmFtZURl
c2NyaXB0aW9uKGZyYW1lKTsKICAgICAgICAgZnB1dHMoIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVcbiIsIHN0ZG91dCk7CkBAIC0xMzA1LDYgKzEzMDcsMTIgQEAgdm9pZCBXZWJW
aWV3SG9zdDo6cHJpbnRGcmFtZURlc2NyaXB0aW9uKAogICAgIHByaW50ZigiZnJhbWUgXCIlc1wi
IiwgbmFtZTguY19zdHIoKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0hvc3Q6OnByaW50RnJhbWVVc2Vy
R2VzdHVyZVN0YXR1cyhXZWJGcmFtZSogd2ViZnJhbWUsIGNoYXIqIG1zZykKK3sKKyAgICBib29s
IGlzVXNlckdlc3R1cmUgPSB3ZWJmcmFtZS0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyAg
ICBwcmludGYoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJXNcIiVzIiwgaXNVc2VyR2VzdHVy
ZSA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1zZyk7Cit9CisKIHZvaWQgV2ViVmlld0hvc3Q6OnByaW50
UmVzb3VyY2VEZXNjcmlwdGlvbih1bnNpZ25lZCBpZGVudGlmaWVyKQogewogICAgIFJlc291cmNl
TWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmll
cik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw5
IEBAIHByaXZhdGU6CiAgICAgLy8gRHVtcGluZyBhIGZyYW1lIHRvIHRoZSBjb25zb2xlLgogICAg
IHZvaWQgcHJpbnRGcmFtZURlc2NyaXB0aW9uKFdlYktpdDo6V2ViRnJhbWUqKTsKIAorICAgIC8v
IER1bXBpbmcgdGhlIHVzZXIgZ2VzdHVyZSBzdGF0dXMgdG8gdGhlIGNvbnNvbGUuCisgICAgdm9p
ZCBwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoV2ViS2l0OjpXZWJGcmFtZSosIGNoYXIqKTsK
KwogICAgIGJvb2wgaGFzV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaW5kb3c7IH0KICAg
ICB2b2lkIHJlc2V0U2Nyb2xsUmVjdCgpOwogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgp
OwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxv
YWREZWxlZ2F0ZS5tbQkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYlNjcmlwdFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkwgKERSVEV4dHJhcykKQEAgLTg5LDYgKzkw
LDEyIEBAIC0gKE5TU3RyaW5nICopX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm8KICAgICAgICAg
ICAgIHJldHVybiBAImZyYW1lIChhbm9ueW1vdXMpIjsKICAgICB9CiB9CisKKy0gKE5TU3RyaW5n
ICopX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMKK3sKKyAgICBCT09MIGlzVXNlckdl
c3R1cmUgPSBbW3NlbGYgd2ViVmlld10gX2lzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlXTsKKyAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVy
ZSBcIiVAXCIiLCBpc1VzZXJHZXN0dXJlID8gQCJ0cnVlIiA6IEAiZmFsc2UiXTsKK30KIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIEZyYW1lTG9hZERlbGVnYXRlCkBAIC0xNDYsNyArMTUzLDEyIEBA
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRTdGEKICAgICAgICAgTlNTdHJp
bmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmlu
Z10pOwogICAgIH0KLSAgICAKKworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBpbiBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfcHJpbnRGcmFtZVVzZXJH
ZXN0dXJlU3RhdHVzXV07CisgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKKyAgICB9CisKICAgICBBU1NFUlQoW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0p
OwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBvbmx5IHNldCB0aGlzIG9uY2UgcGVyIHRlc3QuICBJZiBp
dCBnZXRzIGNsZWFyZWQsIGFuZCB0aGVuIHNldCBhZ2Fpbiwgd2UgbWlnaHQKICAgICAvLyBlbmQg
dXAgZG9pbmcgdHdvIGR1bXBzIGZvciBvbmUgdGVzdC4KQEAgLTE2Niw3ICsxNzgsNyBAQCAtICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkQ29tCiAgICAgICAgIE5TU3RyaW5nICpz
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkQ29tbWl0TG9hZEZv
ckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsK
ICAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KLSAg
ICAKKwogICAgIEFTU0VSVCghW2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0pOwogICAgIEFT
U0VSVChbZnJhbWUgZGF0YVNvdXJjZV0pOwogICAgIApAQCAtMTkwLDcgKzIwMiw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGYWkKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQoW2Zy
YW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0pOwogICAgIFtzZWxmIHdlYlZpZXc6c2VuZGVyIGxv
Y2F0aW9uQ2hhbmdlRG9uZTplcnJvciBmb3JEYXRhU291cmNlOltmcmFtZSBwcm92aXNpb25hbERh
dGFTb3VyY2VdXTsKIH0KQEAgLTIwNCw3ICsyMTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZGlkRmluCiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lIiwgW2ZyYW1lIF9k
cnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgi
JXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZJWE1F
OiBUaGlzIGNhbGwgdG8gZGlzcGxheUlmTmVlZGVkIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6
Ly9wcm9ibGVtLzUwOTIzNjE+IGlzIGZpeGVkLgogICAgIC8vIEFmdGVyIHRoYXQgaXMgZml4ZWQs
IHdlIHdpbGwgcmVlbmFibGUgcGFpbnRpbmcgYWZ0ZXIgV2ViQ29yZSBpcyBkb25lIGxvYWRpbmcg
dGhlIGRvY3VtZW50LCAKICAgICAvLyBhbmQgdGhpcyBjYWxsIHdpbGwgbm8gbG9uZ2VyIGJlIG5l
ZWRlZC4KQEAgLTIyMCw3ICsyMzIsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgZGlkRmFpCiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAIC0gZGlkRmFpbExvYWRXaXRoRXJyb3IiLCBbZnJhbWUgX2RydF9kZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0
cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCiAgICAgQVNTRVJUKCFbZnJhbWUgcHJv
dmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAgQVNTRVJUKFtmcmFtZSBkYXRhU291cmNlXSk7CiAg
ICAgCkBAIC0yMzMsNyArMjQ1LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmll
dyB3aW5kbwogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI/PyAtIHdpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSJdOwogICAgICAgICBwcmlu
dGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTMxNCw3ICszMjYsNyBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkUmVjCiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkUmVjZWl2ZVRpdGxlOiAlQCIsIFtm
cmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwgdGl0bGVdOwogICAg
ICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFRpdGxlQ2hhbmdlcygpKQogICAg
ICAgICBwcmludGYoIlRJVExFIENIQU5HRUQ6ICVzXG4iLCBbdGl0bGUgVVRGOFN0cmluZ10pOwog
fQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDYgKzczLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQog
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGZhbHNl
KTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTG9hZGVyKGZhbHNlKTsK
KyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRl
cihmYWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoZmFsc2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQodHJ1ZSk7CkBAIC0yNDYsNiArMjQ3LDExIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBGcmFtZUxvYWQKICAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTG9hZGVyKHRydWUpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpCit7Cisg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXIo
dHJ1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKHRydWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNzAwMjYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9p
ZCBoYW5kbGVFcnJvclBhZ2VzKCkgeyBtX2hhbmRsZUVycm9yUGFnZXMgPSB0cnVlOyB9CiAgICAg
dm9pZCBkdW1wRWRpdGluZ0NhbGxiYWNrcygpOwogICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpOworICAgIHZvaWQgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKTsK
ICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKICAgICB2b2lkIGR1bXBSZXNv
dXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CiAgICAgdm9pZCBkdW1wSGlzdG9yeUNhbGxiYWNrcygp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71392</attachid>
            <date>2010-10-20 22:51:22 -0700</date>
            <delta_ts>2010-10-21 18:56:26 -0700</delta_ts>
            <desc>patch V2 (fixed Tony&apos;s nit)</desc>
            <filename>patch005.txt</filename>
            <type>text/plain</type>
            <size>24571</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxODApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMjAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEdW1wIHRoZSBnZXN0dXJlIHN0YXR1cyBvZiBmcmFtZSBpbiBmcmFtZSBsb2FkIGNhbGxiYWNr
cyBpbiBEdW1wUmVuZGVyVHJlZQorICAgICAgICBieSBhZGRpbmcgYSBuZXcgbWV0aG9kIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzLgorICAgICAgICBOb3cgb25seSBkdW1wIHRo
ZSBnZXN0dXJlIHN0YXR1cyBpbiAiRGlkU3RhcnRQcm92aXNpb25hbExvYWQiIGNhbGxiYWNrLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRl
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgor
CiAyMDEwLTEwLTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJl
dmlzaW9uIDcwMDI2KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYxLDYgKzU2MSwxMSBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMCiAgICAgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gYjsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcihib29sIGIpCit7CisgICAg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNr
cyA9IGI7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoYm9vbCBiKQogewogICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MgPSBiOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcGxh
aW5UZXh0KGNvbnN0IFFWYXJpYW50JiBybmcpOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcEZyYW1l
TG9hZGVyKGJvb2wgYik7CisgICAgc3RhdGljIHZvaWQgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRlcihib29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
Ym9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhi
b29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoKGNv
bnN0IFFTdHJpbmcmIHBhdGgpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNiw2ICsxMDYsMTMgQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
cgogICAgIH0KIH0KIAorc3RhdGljIFFTdHJpbmcgZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3Rh
dHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5p
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxh
dGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlMVwiIikuYXJnKFFMYXRpbjFTdHJpbmco
InRydWUiKSk7CisgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNl
ciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKK30KKwogc3Rh
dGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgX3VybCkKIHsKICAgICBpZiAoX3VybC5pc0VtcHR5KCkgfHwgIV91cmwuaXNM
b2NhbEZpbGUoKSkKQEAgLTE1OSw2ICsxNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogCiBi
b29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNl
OworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVy
Q2FsbGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwpAQCAtMzE0LDcgKzMyMiw2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRIYW4KICAgICAvLyBkb24ndCBu
ZWVkIHRoaXMgb25lCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAg
cHJpbnRmKCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRhYmxl
KGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7Ci0KIH0KIAog
CkBAIC0zNzMsNyArMzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFB1cwogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBAIC0zODEsNyArMzg4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlcAogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
CkBAIC0zODksNyArMzk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFBvcAogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAgICAgICAKKwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTQwMyw2ICs0MTAsOSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
bV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFt
ZSkpKTsKKwogICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPnBy
b3Zpc2lvbmFsTG9hZCgpOwogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3M7CisgICAgc3RhdGljIGJvb2wgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRlckNhbGxiYWNrczsKICAgICBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzOwogICAgIHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVz
OwogICAgIHN0YXRpYyBRU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAxODApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0xMC0yMCAgSm9obm55IERpbmcgIDxqbmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIER1bXAgdGhlIGdlc3R1cmUgc3RhdHVzIG9mIGZyYW1lIGluIGZyYW1lIGxvYWQgY2FsbGJh
Y2tzIGluIER1bXBSZW5kZXJUcmVlCisgICAgICAgIGJ5IGFkZGluZyBhIG5ldyBtZXRob2QgZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MuCisgICAgICAgIE5vdyBvbmx5IGR1bXAg
dGhlIGdlc3R1cmUgc3RhdHVzIGluICJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCIgY2FsbGJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg0OQor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAg
ICAgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJl
c2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hl
bGw6OnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJW
aWV3SG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OnByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJh
bWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcnRfcHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzXSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2Fk
RGVsZWdhdGUgd2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0Zy
YW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpm
b3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERl
bGVnYXRlIHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOl0pOgorICAgICAgICAo
LVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKwogMjAx
MC0xMC0yMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MDAyNikKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0
VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyhmYWxzZSkKICAgICAs
IG1fZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBGcmFtZUxvYWRDYWxs
YmFja3MoZmFsc2UpCisgICAgLCBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tz
KGZhbHNlKQogICAgICwgbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGZhbHNlKQogICAg
ICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKQEAgLTE2Nyw2ICsxNjgsMTMgQEAgc3RhdGljIEpT
VmFsdWVSZWYgZHVtcEZyYW1lTG9hZENhbGxiYWNrcwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3ModHJ1
ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0
aWMgSlNWYWx1ZVJlZiBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwpAQCAtMTg4OSw2ICsxODk3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wRGF0YWJhc2VDYWxsYmFja3Mi
LCBkdW1wRGF0YWJhc2VDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1w
RWRpdGluZ0NhbGxiYWNrcyIsIGR1bXBFZGl0aW5nQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiZHVtcEZyYW1lTG9hZENhbGxiYWNrcyIsIGR1bXBGcmFtZUxvYWRDYWxsYmFj
a3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZENhbGxiYWNrcyIsIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwgICAgICAgIAogICAgICAgICB7ICJkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzIiwg
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1
bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzIiwgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlw
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU2VsZWN0aW9uUmVjdCIsIGR1bXBT
ZWxlY3Rpb25SZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzAwMjYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBkdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
OyB9CiAgICAgdm9pZCBzZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgZHVtcEZyYW1lTG9h
ZENhbGxiYWNrcykgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSBkdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzOyB9CisgICAgCisgICAgYm9vbCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxi
YWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFj
a3M7IH0KKyAgICB2b2lkIHNldER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGJv
b2wgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpIHsgbV9kdW1wVXNlckdlc3R1
cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJh
Y2tzOyB9ICAgIAogCiAgICAgYm9vbCBkdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBz
ZXREdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcEhpc3RvcnlEZWxlZ2F0ZUNh
bGxiYWNrcykgeyBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3MgPSBkdW1wSGlzdG9yeURl
bGVnYXRlQ2FsbGJhY2tzOyB9CkBAIC0zMTEsNiArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wRWRpdGluZ0NhbGxiYWNr
czsKICAgICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKKyAgICBib29sIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBIaXN0b3J5RGVs
ZWdhdGVDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAg
ICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk0LDYgKzk0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAog
ICAgIGJpbmRNZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wRWRpdGlu
Z0NhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEVkaXRpbmdDYWxsYmFja3Mp
OwogICAgIGJpbmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxsYmFja3MiLCAmTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOworICAgIGJpbmRNZXRob2QoImR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFJlc291cmNlUmVzcG9uc2VN
SU1FVHlwZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wU2VsZWN0aW9uUmVjdCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcFNlbGVjdGlvblJlY3QpOwpAQCAtMjg4LDYgKzI4OSwxMiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wRnJhbWVMb2FkCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7CiAgICAgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsK
QEAgLTUyMiw2ICs1MjksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAg
ICAgbV9kdW1wQXNUZXh0ID0gZmFsc2U7CiAgICAgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IGZh
bHNlOwogICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNlOworICAgIG1fZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzID0gZmFsc2U7CiAgICAgbV9kdW1wQmFja0ZvcndhcmRMaXN0ID0gZmFsc2U7CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNiArODgsMTEgQEAgcHVibGljOgogICAgIC8vIGlnbm9yZXMgYW55IHRoYXQgbWF5IGJl
IHByZXNlbnQuCiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZs
YWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBhIGxpbmUgb2YKKyAgICAvLyB1
c2VyIGdlc3R1cmUgc3RhdHVzIHRleHQgZm9yIHNvbWUgZnJhbWUgbG9hZCBjYWxsYmFja3MuICBJ
dCB0YWtlcyBubworICAgIC8vIGFyZ3VtZW50cywgYW5kIGlnbm9yZXMgYW55IHRoYXQgbWF5IGJl
IHByZXNlbnQuCisgICAgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyhj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gcHJpbnQgb3V0IGEg
dGV4dAogICAgIC8vIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4gIEl0
IGlnbm9yZXMgYWxsIGFyZ3VtZW50cy4KICAgICB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3QoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtMzQwLDYgKzM0NSw4IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9k
dW1wRWRpdGluZ0NhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpIHsgcmV0dXJuIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0
U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKSB7IG1fZHVtcEZyYW1lTG9h
ZENhbGxiYWNrcyA9IHZhbHVlOyB9CisgICAgYm9vbCBzaG91bGREdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3M7IH0KKyAgICB2b2lkIHNldFNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2Fk
Q2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxi
YWNrcyA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KCkge3JldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAgICB2b2lkIHNldFNo
b3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGJvb2wgdmFsdWUpIHsgbV9kdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIHtyZXR1cm4gbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1J
TUVUeXBlczsgfQpAQCAtNDYwLDYgKzQ2NywxMCBAQCBwcml2YXRlOgogICAgIC8vIGxvYWQgY2Fs
bGJhY2suCiAgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7CiAKKyAgICAvLyBJZiB0
cnVlLCB0aGUgdGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGxpbmUgb2YgdGhlIHVzZXIgZ2VzdHVy
ZSBzdGF0dXMKKyAgICAvLyB0ZXh0IGZvciBzb21lIGZyYW1lIGxvYWQgY2FsbGJhY2tzLgorICAg
IGJvb2wgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrczsKKwogICAgIC8vIElm
IHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgZGVzY3JpcHRpdmUgbGluZSBmb3Ig
ZWFjaCByZXNvdXJjZQogICAgIC8vIGxvYWQgY2FsbGJhY2suCiAgICAgYm9vbCBtX2R1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3M7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDYgKzEwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMoV2ViS2l0OjpXZWJXaWRn
ZXQqLCBib29sIGVuYWJsZSk7CiAgICAgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkgY29uc3QgeyByZXR1cm4gKG1fdGVzdElzUHJlcGFyaW5nIHx8IG1fdGVzdElzUGVuZGluZykg
JiYgbGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
OyB9CisgICAgYm9vbCBzaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygp
IGNvbnN0IHsgcmV0dXJuIChtX3Rlc3RJc1ByZXBhcmluZyB8fCBtX3Rlc3RJc1BlbmRpbmcpICYm
IGxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2Fk
Q2FsbGJhY2tzKCk7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSBjb25zdCAgeyByZXR1cm4gKG1fdGVzdElzUHJlcGFyaW5nIHx8IG1fdGVzdElzUGVuZGluZykg
JiYgbGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNr
cygpOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNv
bnN0ICB7IHJldHVybiAobV90ZXN0SXNQcmVwYXJpbmcgfHwgbV90ZXN0SXNQZW5kaW5nKSAmJiBs
YXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBl
cygpOyB9CiAgICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBmbGFnKSB7IG1faXNMb2FkaW5nID0g
ZmxhZzsgfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
Myw2ICs4MTMsOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRDcmVhdGVEYXRhU291cmNlKFdlCiAK
IHZvaWQgV2ViVmlld0hvc3Q6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1lKiBmcmFt
ZSkKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRD
YWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKGZyYW1lLCAi
IC0gaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIik7CiAgICAgaWYgKG1fc2hl
bGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAgICAgICBwcmludEZyYW1l
RGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygiIC0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZVxuIiwgc3Rkb3V0KTsKQEAgLTEzMDUsNiArMTMwNywxMiBAQCB2b2lkIFdl
YlZpZXdIb3N0OjpwcmludEZyYW1lRGVzY3JpcHRpb24oCiAgICAgcHJpbnRmKCJmcmFtZSBcIiVz
XCIiLCBuYW1lOC5jX3N0cigpKTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6cHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzKFdlYkZyYW1lKiB3ZWJmcmFtZSwgY2hhciogbXNnKQoreworICAgIGJv
b2wgaXNVc2VyR2VzdHVyZSA9IHdlYmZyYW1lLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwor
ICAgIHByaW50ZigiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlc1wiJXMiLCBpc1VzZXJHZXN0
dXJlID8gInRydWUiIDogImZhbHNlIiwgbXNnKTsKK30KKwogdm9pZCBXZWJWaWV3SG9zdDo6cHJp
bnRSZXNvdXJjZURlc2NyaXB0aW9uKHVuc2lnbmVkIGlkZW50aWZpZXIpCiB7CiAgICAgUmVzb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZmluZChpZGVudGlm
aWVyKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIw
LDkgQEAgcHJpdmF0ZToKICAgICAvLyBEdW1waW5nIGEgZnJhbWUgdG8gdGhlIGNvbnNvbGUuCiAg
ICAgdm9pZCBwcmludEZyYW1lRGVzY3JpcHRpb24oV2ViS2l0OjpXZWJGcmFtZSopOwogCisgICAg
Ly8gRHVtcGluZyB0aGUgdXNlciBnZXN0dXJlIHN0YXR1cyB0byB0aGUgY29uc29sZS4KKyAgICB2
b2lkIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJLaXQ6OldlYkZyYW1lKiwgY2hhciop
OworCiAgICAgYm9vbCBoYXNXaW5kb3coKSBjb25zdCB7IHJldHVybiBtX2hhc1dpbmRvdzsgfQog
ICAgIHZvaWQgcmVzZXRTY3JvbGxSZWN0KCk7CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3Jl
KCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1l
TG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYk5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViU2NyaXB0V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJTZWN1cml0eU9yaWdpblBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KIAogQGludGVyZmFjZSBOU1VSTCAoRFJURXh0cmFzKQpAQCAtODksNiAr
OTAsMTIgQEAgLSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGbwogICAgICAg
ICAgICAgcmV0dXJuIEAiZnJhbWUgKGFub255bW91cykiOwogICAgIH0KIH0KKworLSAoTlNTdHJp
bmcgKilfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cworeworICAgIEJPT0wgaXNVc2Vy
R2VzdHVyZSA9IFtbc2VsZiB3ZWJWaWV3XSBfaXNQcm9jZXNzaW5nVXNlckdlc3R1cmVdOworICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkZyYW1lIHdpdGggdXNlciBnZXN0
dXJlIFwiJUBcIiIsIGlzVXNlckdlc3R1cmUgPyBAInRydWUiIDogQCJmYWxzZSJdOworfQogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gRnJhbWVMb2FkRGVsZWdhdGUKQEAgLTE0Niw3ICsxNTMsMTIg
QEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFN0YQogICAgICAgICBOU1N0
cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3Ry
aW5nXSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGluIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNl
ckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0
cmluZ10pOworICAgIH0KKwogICAgIEFTU0VSVChbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNl
XSk7CiAgICAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgc2V0IHRoaXMgb25jZSBwZXIgdGVzdC4gIElm
IGl0IGdldHMgY2xlYXJlZCwgYW5kIHRoZW4gc2V0IGFnYWluLCB3ZSBtaWdodAogICAgIC8vIGVu
ZCB1cCBkb2luZyB0d28gZHVtcHMgZm9yIG9uZSB0ZXN0LgpAQCAtMTY2LDcgKzE3OCw3IEBAIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRDb20KICAgICAgICAgTlNTdHJpbmcg
KnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1d
OwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQot
ICAgIAorCiAgICAgQVNTRVJUKCFbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAg
QVNTRVJUKFtmcmFtZSBkYXRhU291cmNlXSk7CiAgICAgCkBAIC0xOTAsNyArMjAyLDcgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIEFTU0VSVChb
ZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAgW3NlbGYgd2ViVmlldzpzZW5kZXIg
bG9jYXRpb25DaGFuZ2VEb25lOmVycm9yIGZvckRhdGFTb3VyY2U6W2ZyYW1lIHByb3Zpc2lvbmFs
RGF0YVNvdXJjZV1dOwogfQpAQCAtMjA0LDcgKzIxNiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBkaWRGaW4KICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUiLCBbZnJhbWUg
X2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYg
KCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gRklY
TUU6IFRoaXMgY2FsbCB0byBkaXNwbGF5SWZOZWVkZWQgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRh
cjovL3Byb2JsZW0vNTA5MjM2MT4gaXMgZml4ZWQuCiAgICAgLy8gQWZ0ZXIgdGhhdCBpcyBmaXhl
ZCwgd2Ugd2lsbCByZWVuYWJsZSBwYWludGluZyBhZnRlciBXZWJDb3JlIGlzIGRvbmUgbG9hZGlu
ZyB0aGUgZG9jdW1lbnQsIAogICAgIC8vIGFuZCB0aGlzIGNhbGwgd2lsbCBubyBsb25nZXIgYmUg
bmVlZGVkLgpAQCAtMjIwLDcgKzIzMiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBkaWRGYWkKICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSBkaWRGYWlsTG9hZFdpdGhFcnJvciIsIFtmcmFtZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBb
c3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQoIVtmcmFtZSBw
cm92aXNpb25hbERhdGFTb3VyY2VdKTsKICAgICBBU1NFUlQoW2ZyYW1lIGRhdGFTb3VyY2VdKTsK
ICAgICAKQEAgLTIzMyw3ICsyNDUsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IHdpbmRvCiAgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIj8/IC0gd2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlIl07CiAgICAgICAgIHBy
aW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0gICAgCisKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzE0LDcgKzMyNiw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWMKICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZlVGl0bGU6ICVAIiwg
W2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCB0aXRsZV07CiAg
ICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVGl0bGVDaGFuZ2VzKCkpCiAg
ICAgICAgIHByaW50ZigiVElUTEUgQ0hBTkdFRDogJXNcbiIsIFt0aXRsZSBVVEY4U3RyaW5nXSk7
CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgp
CiAKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFs
c2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMb2FkZXIoZmFsc2Up
OworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZGVyKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcyhmYWxzZSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNv
dXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKTsKQEAgLTI0Niw2ICsyNDcsMTEg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEZyYW1lTG9hZAogICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMb2FkZXIodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkKK3sK
KyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRl
cih0cnVlKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3ModHJ1ZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3MDAyNikK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYyBzbG90czoKICAgICB2
b2lkIGhhbmRsZUVycm9yUGFnZXMoKSB7IG1faGFuZGxlRXJyb3JQYWdlcyA9IHRydWU7IH0KICAg
ICB2b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2Fs
bGJhY2tzKCk7CisgICAgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygp
OwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwogICAgIHZvaWQgZHVtcFJl
c291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKICAgICB2b2lkIGR1bXBIaXN0b3J5Q2FsbGJhY2tz
KCk7Cg==
</data>
<flag name="review"
          id="61430"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="61585"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71633</attachid>
            <date>2010-10-23 03:27:32 -0700</date>
            <delta_ts>2010-10-25 12:03:27 -0700</delta_ts>
            <desc>landing patch</desc>
            <filename>patch005.txt</filename>
            <type>text/plain</type>
            <size>24655</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAyMDkpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMjAgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEdW1wIHRoZSBnZXN0dXJlIHN0YXR1cyBvZiBmcmFtZSBpbiBmcmFtZSBsb2FkIGNhbGxiYWNr
cyBpbiBEdW1wUmVuZGVyVHJlZQorICAgICAgICBieSBhZGRpbmcgYSBuZXcgbWV0aG9kIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzLgorICAgICAgICBOb3cgb25seSBkdW1wIHRo
ZSBnZXN0dXJlIHN0YXR1cyBpbiAiRGlkU3RhcnRQcm92aXNpb25hbExvYWQiIGNhbGxiYWNrLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NDkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRl
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgor
CiAyMDEwLTEwLTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJl
dmlzaW9uIDcwMDI2KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYxLDYgKzU2MSwxMSBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMCiAgICAgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gYjsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcihib29sIGIpCit7CisgICAg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNr
cyA9IGI7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoYm9vbCBiKQogewogICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MgPSBiOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcGxh
aW5UZXh0KGNvbnN0IFFWYXJpYW50JiBybmcpOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcEZyYW1l
TG9hZGVyKGJvb2wgYik7CisgICAgc3RhdGljIHZvaWQgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRlcihib29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
Ym9vbCBiKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhi
b29sIGIpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoKGNv
bnN0IFFTdHJpbmcmIHBhdGgpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNiw2ICsxMDYsMTMgQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
cgogICAgIH0KIH0KIAorc3RhdGljIFFTdHJpbmcgZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3Rh
dHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5p
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxh
dGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlMVwiIikuYXJnKFFMYXRpbjFTdHJpbmco
InRydWUiKSk7CisgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNl
ciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKK30KKwogc3Rh
dGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgX3VybCkKIHsKICAgICBpZiAoX3VybC5pc0VtcHR5KCkgfHwgIV91cmwuaXNM
b2NhbEZpbGUoKSkKQEAgLTE1OSw2ICsxNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogCiBi
b29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNl
OworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVy
Q2FsbGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJl
cXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOwpAQCAtMzE0LDcgKzMyMiw2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRIYW4KICAgICAvLyBkb24ndCBu
ZWVkIHRoaXMgb25lCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAg
cHJpbnRmKCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRhYmxl
KGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7Ci0KIH0KIAog
CkBAIC0zNzMsNyArMzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFB1cwogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBAIC0zODEsNyArMzg4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlcAogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaXNwYXRjaERpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKLSAgICAgICAgCisKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
CkBAIC0zODksNyArMzk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFBvcAogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwotICAgICAgICAKKwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTQwMyw2ICs0MTAsOSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
bV9mcmFtZSkpKTsKIAorICAgIGlmIChkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZVxuIiwgcVByaW50YWJsZShkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMobV9mcmFt
ZSkpKTsKKwogICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPnBy
b3Zpc2lvbmFsTG9hZCgpOwogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKICAgICBzdGF0aWMgYm9vbCBk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3M7CisgICAgc3RhdGljIGJvb2wgZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRlckNhbGxiYWNrczsKICAgICBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzOwogICAgIHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVz
OwogICAgIHN0YXRpYyBRU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoOwpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzAyMDkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0xMC0yMCAgSm9obm55IERpbmcgIDxqbmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIER1bXAgdGhlIGdlc3R1cmUgc3RhdHVzIG9mIGZyYW1lIGluIGZyYW1lIGxvYWQgY2FsbGJh
Y2tzIGluIER1bXBSZW5kZXJUcmVlCisgICAgICAgIGJ5IGFkZGluZyBhIG5ldyBtZXRob2QgZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MuCisgICAgICAgIE5vdyBvbmx5IGR1bXAg
dGhlIGdlc3R1cmUgc3RhdHVzIGluICJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCIgY2FsbGJhY2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg0OQor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAg
ICAgKGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJl
SW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJl
c2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hl
bGw6OnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJW
aWV3SG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6
OnByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJh
bWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcnRfcHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzXSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2Fk
RGVsZWdhdGUgd2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0Zy
YW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpm
b3JGcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGlkRmFpbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZERl
bGVnYXRlIHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOl0pOgorICAgICAgICAo
LVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKwogMjAx
MC0xMC0yMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzQ3NzU0PiBOZXcgc2NyaXB0IHRvIHZlcmlmeSBleHBsaWNpdCBz
b3VyY2UgZmlsZSB0eXBlcyBpbiBYY29kZSBwcm9qZWN0IGZpbGVzCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA3MDAyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBEYXRhYmFzZUNhbGxiYWNr
cyhmYWxzZSkKICAgICAsIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBGcmFtZUxvYWRDYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX2R1bXBVc2VyR2VzdHVyZUluRnJh
bWVMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJh
Y2tzKGZhbHNlKQogICAgICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAg
ICwgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKQEAgLTE2Nyw2ICsxNjgs
MTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcEZyYW1lTG9hZENhbGxiYWNrcwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRDYWxsYmFja3ModHJ1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTg4OSw2ICsxODk3LDcgQEAgSlNT
dGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wRGF0
YWJhc2VDYWxsYmFja3MiLCBkdW1wRGF0YWJhc2VDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJkdW1wRWRpdGluZ0NhbGxiYWNrcyIsIGR1bXBFZGl0aW5nQ2FsbGJhY2tzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcEZyYW1lTG9hZENhbGxiYWNrcyIsIGR1bXBG
cmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyIsIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgICAgICAgIAogICAgICAgICB7ICJkdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzIiwgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzIiwgZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU2VsZWN0
aW9uUmVjdCIsIGR1bXBTZWxlY3Rpb25SZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJv
b2wgZHVtcEZyYW1lTG9hZENhbGxiYWNrcykgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSBk
dW1wRnJhbWVMb2FkQ2FsbGJhY2tzOyB9CisgICAgCisgICAgYm9vbCBkdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0dXJlSW5G
cmFtZUxvYWRDYWxsYmFja3M7IH0KKyAgICB2b2lkIHNldER1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkQ2FsbGJhY2tzKGJvb2wgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MpIHsg
bV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyA9IGR1bXBVc2VyR2VzdHVyZUlu
RnJhbWVMb2FkQ2FsbGJhY2tzOyB9ICAgIAogCiAgICAgYm9vbCBkdW1wSGlzdG9yeURlbGVnYXRl
Q2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tz
OyB9CiAgICAgdm9pZCBzZXREdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcEhp
c3RvcnlEZWxlZ2F0ZUNhbGxiYWNrcykgeyBtX2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3Mg
PSBkdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzOyB9CkBAIC0zMTEsNiArMzE0LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1w
RWRpdGluZ0NhbGxiYWNrczsKICAgICBib29sIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsKKyAg
ICBib29sIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBt
X2R1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBiaW5kTWV0
aG9kKCJkdW1wRWRpdGluZ0NhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEVk
aXRpbmdDYWxsYmFja3MpOwogICAgIGJpbmRNZXRob2QoImR1bXBGcmFtZUxvYWRDYWxsYmFja3Mi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MpOworICAgIGJp
bmRNZXRob2QoImR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcyk7CiAgICAg
YmluZE1ldGhvZCgiZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgYmluZE1ldGhvZCgiZHVtcFJl
c291cmNlUmVzcG9uc2VNSU1FVHlwZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBSZXNv
dXJjZVJlc3BvbnNlTUlNRVR5cGVzKTsKICAgICBiaW5kTWV0aG9kKCJkdW1wU2VsZWN0aW9uUmVj
dCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFNlbGVjdGlvblJlY3QpOwpAQCAtMjg4LDYg
KzI4OSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wRnJhbWVMb2FkCiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBtX2R1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzID0gdHJ1ZTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgbV9kdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzID0gdHJ1ZTsKQEAgLTUyMiw2ICs1MjksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpyZXNldCgpCiAgICAgbV9kdW1wQXNUZXh0ID0gZmFsc2U7CiAgICAgbV9kdW1wRWRpdGlu
Z0NhbGxiYWNrcyA9IGZhbHNlOwogICAgIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IGZhbHNl
OworICAgIG1fZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAg
ICBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBSZXNvdXJj
ZVJlc3BvbnNlTUlNRVR5cGVzID0gZmFsc2U7CiAgICAgbV9kdW1wQmFja0ZvcndhcmRMaXN0ID0g
ZmFsc2U7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDcwMDI2KQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTEgQEAgcHVibGljOgogICAgIC8vIGlnbm9yZXMg
YW55IHRoYXQgbWF5IGJlIHByZXNlbnQuCiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIFRoaXMgZnVu
Y3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0aGUgdGVzdF9zaGVsbCB0byBwcmludCBhIGxp
bmUgb2YKKyAgICAvLyB1c2VyIGdlc3R1cmUgc3RhdHVzIHRleHQgZm9yIHNvbWUgZnJhbWUgbG9h
ZCBjYWxsYmFja3MuICBJdCB0YWtlcyBubworICAgIC8vIGFyZ3VtZW50cywgYW5kIGlnbm9yZXMg
YW55IHRoYXQgbWF5IGJlIHByZXNlbnQuCisgICAgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZyYW1l
TG9hZENhbGxiYWNrcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwg
dG8gcHJpbnQgb3V0IGEgdGV4dAogICAgIC8vIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBiYWNrL2Zv
cndhcmQgbGlzdC4gIEl0IGlnbm9yZXMgYWxsIGFyZ3VtZW50cy4KICAgICB2b2lkIGR1bXBCYWNr
Rm9yd2FyZExpc3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtMzQw
LDYgKzM0NSw4IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9kdW1wRWRpdGluZ0NhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsg
fQogICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKSB7
IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVlOyB9CisgICAgYm9vbCBzaG91bGREdW1w
VXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpIHsgcmV0dXJuIG1fZHVtcFVzZXJHZXN0
dXJlSW5GcmFtZUxvYWRDYWxsYmFja3M7IH0KKyAgICB2b2lkIHNldFNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVlOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkge3JldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0K
ICAgICB2b2lkIHNldFNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGJvb2wgdmFs
dWUpIHsgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IHZhbHVlOyB9CiAgICAgYm9v
bCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIHtyZXR1cm4gbV9kdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQpAQCAtNDYwLDYgKzQ2NywxMCBAQCBwcml2YXRlOgog
ICAgIC8vIGxvYWQgY2FsbGJhY2suCiAgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7
CiAKKyAgICAvLyBJZiB0cnVlLCB0aGUgdGVzdF9zaGVsbCB3aWxsIG91dHB1dCBhIGxpbmUgb2Yg
dGhlIHVzZXIgZ2VzdHVyZSBzdGF0dXMKKyAgICAvLyB0ZXh0IGZvciBzb21lIGZyYW1lIGxvYWQg
Y2FsbGJhY2tzLgorICAgIGJvb2wgbV9kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNr
czsKKwogICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgb3V0cHV0IGEgZGVzY3Jp
cHRpdmUgbGluZSBmb3IgZWFjaCByZXNvdXJjZQogICAgIC8vIGxvYWQgY2FsbGJhY2suCiAgICAg
Ym9vbCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAkocmV2aXNpb24gNzAwMjYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9jdXMo
V2ViS2l0OjpXZWJXaWRnZXQqLCBib29sIGVuYWJsZSk7CiAgICAgYm9vbCBzaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gKG1fdGVzdElzUHJlcGFyaW5nIHx8IG1f
dGVzdElzUGVuZGluZykgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpOyB9CisgICAgYm9vbCBzaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1l
TG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIChtX3Rlc3RJc1ByZXBhcmluZyB8fCBtX3Rl
c3RJc1BlbmRpbmcpICYmIGxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCk7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKSBjb25zdCAgeyByZXR1cm4gKG1fdGVzdElzUHJlcGFyaW5nIHx8IG1f
dGVzdElzUGVuZGluZykgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcygpOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25z
ZU1JTUVUeXBlcygpIGNvbnN0ICB7IHJldHVybiAobV90ZXN0SXNQcmVwYXJpbmcgfHwgbV90ZXN0
SXNQZW5kaW5nKSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpOyB9CiAgICAgdm9pZCBzZXRJc0xvYWRpbmcoYm9vbCBmbGFnKSB7
IG1faXNMb2FkaW5nID0gZmxhZzsgfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gNzAwMjYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxMyw2ICs4MTMsOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRDcmVhdGVE
YXRhU291cmNlKFdlCiAKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KFdlYkZyYW1lKiBmcmFtZSkKIHsKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcFVzZXJHZXN0
dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRGcmFtZVVzZXJHZXN0dXJl
U3RhdHVzKGZyYW1lLCAiIC0gaW4gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIik7
CiAgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewogICAg
ICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpOwogICAgICAgICBmcHV0cygiIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIiwgc3Rkb3V0KTsKQEAgLTEzMDUsNiArMTMw
NywxMiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpwcmludEZyYW1lRGVzY3JpcHRpb24oCiAgICAgcHJp
bnRmKCJmcmFtZSBcIiVzXCIiLCBuYW1lOC5jX3N0cigpKTsKIH0KIAordm9pZCBXZWJWaWV3SG9z
dDo6cHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKFdlYkZyYW1lKiB3ZWJmcmFtZSwgY29uc3Qg
Y2hhciogbXNnKQoreworICAgIGJvb2wgaXNVc2VyR2VzdHVyZSA9IHdlYmZyYW1lLT5pc1Byb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpOworICAgIHByaW50ZigiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUg
XCIlc1wiJXMiLCBpc1VzZXJHZXN0dXJlID8gInRydWUiIDogImZhbHNlIiwgbXNnKTsKK30KKwog
dm9pZCBXZWJWaWV3SG9zdDo6cHJpbnRSZXNvdXJjZURlc2NyaXB0aW9uKHVuc2lnbmVkIGlkZW50
aWZpZXIpCiB7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZUlkZW50
aWZpZXJNYXAuZmluZChpZGVudGlmaWVyKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkocmV2aXNpb24gNzAwMjYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjAsNiArMjIwLDkgQEAgcHJpdmF0ZToKICAgICAvLyBEdW1waW5nIGEgZnJh
bWUgdG8gdGhlIGNvbnNvbGUuCiAgICAgdm9pZCBwcmludEZyYW1lRGVzY3JpcHRpb24oV2ViS2l0
OjpXZWJGcmFtZSopOwogCisgICAgLy8gRHVtcGluZyB0aGUgdXNlciBnZXN0dXJlIHN0YXR1cyB0
byB0aGUgY29uc29sZS4KKyAgICB2b2lkIHByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJL
aXQ6OldlYkZyYW1lKiwgY29uc3QgY2hhciopOworCiAgICAgYm9vbCBoYXNXaW5kb3coKSBjb25z
dCB7IHJldHVybiBtX2hhc1dpbmRvdzsgfQogICAgIHZvaWQgcmVzZXRTY3JvbGxSZWN0KCk7CiAg
ICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiA3MDAy
NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYk5T
VVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0V29ybGQuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJW
aWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogQGludGVyZmFjZSBO
U1VSTCAoRFJURXh0cmFzKQpAQCAtODksNiArOTAsMTIgQEAgLSAoTlNTdHJpbmcgKilfZHJ0X2Rl
c2NyaXB0aW9uU3VpdGFibGVGbwogICAgICAgICAgICAgcmV0dXJuIEAiZnJhbWUgKGFub255bW91
cykiOwogICAgIH0KIH0KKworLSAoTlNTdHJpbmcgKilfZHJ0X3ByaW50RnJhbWVVc2VyR2VzdHVy
ZVN0YXR1cworeworICAgIEJPT0wgaXNVc2VyR2VzdHVyZSA9IFtbc2VsZiB3ZWJWaWV3XSBfaXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmVdOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJUBcIiIsIGlzVXNlckdlc3R1cmUgPyBA
InRydWUiIDogQCJmYWxzZSJdOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRnJhbWVMb2Fk
RGVsZWdhdGUKQEAgLTE0Niw3ICsxNTMsMTIgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZFN0YQogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQCAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiLCBbZnJh
bWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmlu
dGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCisgICAgaWYg
KCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxv
YWRDYWxsYmFja3MoKSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGluIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUi
LCBbZnJhbWUgX2RydF9wcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXNdXTsKKyAgICAgICAgcHJp
bnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0KKwogICAgIEFTU0VSVChb
ZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAgLy8gTWFrZSBzdXJlIHdlIG9ubHkg
c2V0IHRoaXMgb25jZSBwZXIgdGVzdC4gIElmIGl0IGdldHMgY2xlYXJlZCwgYW5kIHRoZW4gc2V0
IGFnYWluLCB3ZSBtaWdodAogICAgIC8vIGVuZCB1cCBkb2luZyB0d28gZHVtcHMgZm9yIG9uZSB0
ZXN0LgpAQCAtMTY2LDcgKzE3OCw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRDb20KICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0
cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQotICAgIAorCiAgICAgQVNTRVJUKCFbZnJhbWUgcHJv
dmlzaW9uYWxEYXRhU291cmNlXSk7CiAgICAgQVNTRVJUKFtmcmFtZSBkYXRhU291cmNlXSk7CiAg
ICAgCkBAIC0xOTAsNyArMjAyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGRpZEZhaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKKwogICAgIEFTU0VSVChbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSk7
CiAgICAgW3NlbGYgd2ViVmlldzpzZW5kZXIgbG9jYXRpb25DaGFuZ2VEb25lOmVycm9yIGZvckRh
dGFTb3VyY2U6W2ZyYW1lIHByb3Zpc2lvbmFsRGF0YVNvdXJjZV1dOwogfQpAQCAtMjA0LDcgKzIx
Niw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW4KICAgICAgICAg
TlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7
CiAgICAgfQotICAgIAorCiAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCB0byBkaXNwbGF5SWZOZWVk
ZWQgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTA5MjM2MT4gaXMgZml4ZWQu
CiAgICAgLy8gQWZ0ZXIgdGhhdCBpcyBmaXhlZCwgd2Ugd2lsbCByZWVuYWJsZSBwYWludGluZyBh
ZnRlciBXZWJDb3JlIGlzIGRvbmUgbG9hZGluZyB0aGUgZG9jdW1lbnQsIAogICAgIC8vIGFuZCB0
aGlzIGNhbGwgd2lsbCBubyBsb25nZXIgYmUgbmVlZGVkLgpAQCAtMjIwLDcgKzIzMiw3IEBAIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGYWkKICAgICAgICAgTlNTdHJpbmcg
KnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRGYWlsTG9hZFdp
dGhFcnJvciIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07
CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9Ci0g
ICAgCisKICAgICBBU1NFUlQoIVtmcmFtZSBwcm92aXNpb25hbERhdGFTb3VyY2VdKTsKICAgICBB
U1NFUlQoW2ZyYW1lIGRhdGFTb3VyY2VdKTsKICAgICAKQEAgLTIzMyw3ICsyNDUsNyBAQCAtICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHdpbmRvCiAgICAgICAgIE5TU3RyaW5nICpz
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIj8/IC0gd2luZG93U2NyaXB0T2Jq
ZWN0QXZhaWxhYmxlIl07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAt
MzE0LDcgKzMyNiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWMK
ICAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAgLSBkaWRSZWNlaXZlVGl0bGU6ICVAIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHRdLCB0aXRsZV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5n
IFVURjhTdHJpbmddKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wVGl0bGVDaGFuZ2VzKCkpCiAgICAgICAgIHByaW50ZigiVElUTEUgQ0hBTkdFRDog
JXNcbiIsIFt0aXRsZSBVVEY4U3RyaW5nXSk7CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2
aXNpb24gNzAwMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoZmFsc2UpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpkdW1wRnJhbWVMb2FkZXIoZmFsc2UpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKGZhbHNlKTsKICAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhmYWxzZSk7CiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNlKTsK
ICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9h
ZCh0cnVlKTsKQEAgLTI0Niw2ICsyNDcsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZHVtcEZyYW1lTG9hZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVMb2Fk
ZXIodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcih0cnVlKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpCiB7CiAgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3ModHJ1ZSk7CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCShyZXZpc2lvbiA3MDAyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEw
Niw3IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIGhhbmRsZUVycm9yUGFnZXMoKSB7IG1faGFu
ZGxlRXJyb3JQYWdlcyA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7
CiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgdm9pZCBkdW1wVXNlckdl
c3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOwogICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKICAg
ICB2b2lkIGR1bXBIaXN0b3J5Q2FsbGJhY2tzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>