<?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>97540</bug_id>
          
          <creation_ts>2012-09-25 02:26:11 -0700</creation_ts>
          <short_desc>MediaStream API: Update getUserMedia to match the latest specification</short_desc>
          <delta_ts>2012-09-27 04:09:44 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>97582</dependson>
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727429</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-25 02:26:11 -0700</bug_when>
    <thetext>http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia

Navigator.getUserMedia is changed so that the audio and video members can either be a bool or a constraints object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727436</commentid>
    <comment_count>1</comment_count>
      <attachid>165564</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-25 02:40:46 -0700</bug_when>
    <thetext>Created attachment 165564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727439</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 02:44:34 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727699</commentid>
    <comment_count>3</comment_count>
      <attachid>165564</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-25 09:20:09 -0700</bug_when>
    <thetext>Comment on attachment 165564
Patch

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

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:59
&gt; +        bool flag = false;

flag = ?  I guess the name ok is already taken...

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:83
&gt; +    RefPtr&lt;UserMediaRequest&gt; request = adoptRef(new UserMediaRequest(context, controller, audio.release(), video.release(), successCallback, errorCallback));
&gt; +
&gt;      return request.release();

You can merge these lines and delete the variable |request| if you like.

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:102
&gt; +    return (bool)m_audio;

static_cast&lt;bool&gt;(m_audio)

WebKit uses C++ style casts.

Actually, is that even necessary?  Does the compiler complain if you leave off the explicit cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727700</commentid>
    <comment_count>4</comment_count>
      <attachid>165564</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-25 09:21:09 -0700</bug_when>
    <thetext>Comment on attachment 165564
Patch

Tommy, would you be willing to fix these nits in a followup patch?  I see that you&apos;re already asleep and I want to save you the timezone round-trip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727715</commentid>
    <comment_count>5</comment_count>
      <attachid>165564</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 09:29:52 -0700</bug_when>
    <thetext>Comment on attachment 165564
Patch

Clearing flags on attachment: 165564

Committed r129517: &lt;http://trac.webkit.org/changeset/129517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727716</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 09:29:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727811</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 11:21:06 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 97582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728295</commentid>
    <comment_count>8</comment_count>
      <attachid>165564</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-26 01:07:07 -0700</bug_when>
    <thetext>Comment on attachment 165564
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:59
&gt;&gt; +        bool flag = false;
&gt; 
&gt; flag = ?  I guess the name ok is already taken...

Changed names to make more sense. &quot;name&quot; -&gt; &quot;mediaType&quot; and &quot;flag&quot; -&gt; &quot;mediaRequested&quot;.

Here I am checking if the mediaType is a Dictionary or a boolean, and extracting the correct value.

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:83
&gt;&gt;      return request.release();
&gt; 
&gt; You can merge these lines and delete the variable |request| if you like.

Done.

&gt;&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:102
&gt;&gt; +    return (bool)m_audio;
&gt; 
&gt; static_cast&lt;bool&gt;(m_audio)
&gt; 
&gt; WebKit uses C++ style casts.
&gt; 
&gt; Actually, is that even necessary?  Does the compiler complain if you leave off the explicit cast?

I have not used c-style casts for ages and recently I started adding them, sigh. I&apos;m sorry.

You are right, there is no need for a cast at all here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728296</commentid>
    <comment_count>9</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-26 01:07:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Re-opened since this is blocked by 97582

Caused by a missing WEBKIT_EXPORT in WebMediaConstraints.h. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728300</commentid>
    <comment_count>10</comment_count>
      <attachid>165746</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-26 01:15:08 -0700</bug_when>
    <thetext>Created attachment 165746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728312</commentid>
    <comment_count>11</comment_count>
      <attachid>165746</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-26 01:38:46 -0700</bug_when>
    <thetext>Comment on attachment 165746
Patch

Attachment 165746 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14032377

New failing tests:
http/tests/workers/terminate-during-sync-operation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728321</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-26 02:00:05 -0700</bug_when>
    <thetext>Since the Mac build hasn&apos;t enabled MEDIA_STREAMS I am pretty sure my patch has nothing to do with this failure.

(In reply to comment #11)
&gt; (From update of attachment 165746 [details])
&gt; Attachment 165746 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14032377
&gt; 
&gt; New failing tests:
&gt; http/tests/workers/terminate-during-sync-operation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728623</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 08:57:25 -0700</bug_when>
    <thetext>&gt; Since the Mac build hasn&apos;t enabled MEDIA_STREAMS I am pretty sure my patch has nothing to do with this failure.

Yeah, running the tests on mac is new.  I think that&apos;s just a flaky test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728658</commentid>
    <comment_count>14</comment_count>
      <attachid>165746</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 09:23:40 -0700</bug_when>
    <thetext>Comment on attachment 165746
Patch

Rejecting attachment 165746 from commit-queue.

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

Last 500 characters of output:
Kit/chromium/third_party/yasm/source/patched-yasm --revision 154708 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
51&gt;At revision 154708.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/14036464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729332</commentid>
    <comment_count>15</comment_count>
      <attachid>165954</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-09-27 02:09:18 -0700</bug_when>
    <thetext>Created attachment 165954
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729401</commentid>
    <comment_count>16</comment_count>
      <attachid>165954</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 04:06:56 -0700</bug_when>
    <thetext>Comment on attachment 165954
Patch for landing

Clearing flags on attachment: 165954

Committed r129749: &lt;http://trac.webkit.org/changeset/129749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165564</attachid>
            <date>2012-09-25 02:40:46 -0700</date>
            <delta_ts>2012-09-26 01:15:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97540-20120925114005.patch</filename>
            <type>text/plain</type>
            <size>41551</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3NTAyZjFjNGQzNDVi
NzViMjczMDVhNTA4ZTAyY2JiNzgwNjViMjU1Li5mZDg5ZGY0MGJkMDAxOTc4YjEyMjcwMDY1OWVi
YTU0NTJjODAzMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOS0yNSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBnZXRVc2VyTWVkaWEgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaDoKKyAgICAgICAgKFdlYk1lZGlh
Q29uc3RyYWludHMpOgorCiAyMDEyLTA5LTI0ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjIyNDMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOTk2ZGNlNGUzYzczYTEzOWI1MWFhMDhhYTBlZGJmMDUzYzVjZjc4MS4uMmFk
NzRiY2U2OGZmYTU1YjZiODEwNGY4ZTM3ZjllOTJmNjQxZWY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM5IEBACisyMDEyLTA5LTI1ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUu
Y29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIGdldFVzZXJNZWRpYSB0byBt
YXRjaCB0aGUgbGF0ZXN0IHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAxMS93ZWJydGMvZWRpdG9y
L2dldHVzZXJtZWRpYS5odG1sI25hdmlnYXRvcnVzZXJtZWRpYQorICAgICAgICBOYXZpZ2F0b3Iu
Z2V0VXNlck1lZGlhIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUgYXVkaW8gYW5kIHZpZGVvIG1lbWJl
cnMgY2FuIGVpdGhlcgorICAgICAgICBiZSBhIGJvb2wgb3IgYSBjb25zdHJhaW50cyBvYmplY3Qu
CisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHMgZXhwYW5kZWQgdG8gY292ZXIgdGhlIG5ldyBjaGFu
Z2UuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzSW1wbC5oOgorICAgICAgICAoTWVkaWFDb25zdHJhaW50c0ltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFTdHJlYW06OndlYmtpdEdldFVzZXJNZWRpYSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q6OnZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvQ29u
c3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9Db25z
dHJhaW50cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOS0yNCAgSm9uYXRoYW4gTGl1ICA8bmV0
MTQ3QGdtYWlsLmNvbT4KIAogICAgICAgICBVc2UgdW5zaWduZWQgY2hhciBmb3IgYml0ZmllbGQg
aW5zdGVhZCBvZiB1bnNpZ25lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMzQwZWVk
NmFmNzkwNDBmYmM1OWU4ZDY4NWRmOGU1Mzg5YmQzMzRjYi4uYmIwZGFkYzM4MWZiNTBiNmI0MzBk
OGRjMzA0ZWNkMGNhNzdhMGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0wOS0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBnZXRVc2VyTWVkaWEgdG8gbWF0
Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci9n
ZXR1c2VybWVkaWEuaHRtbCNuYXZpZ2F0b3J1c2VybWVkaWEKKyAgICAgICAgTmF2aWdhdG9yLmdl
dFVzZXJNZWRpYSBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhlIGF1ZGlvIGFuZCB2aWRlbyBtZW1iZXJz
IGNhbiBlaXRoZXIKKyAgICAgICAgYmUgYSBib29sIG9yIGEgY29uc3RyYWludHMgb2JqZWN0Lgor
CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViVXNl
ck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6
OmF1ZGlvQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cyk6CisKIDIwMTItMDktMjQgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMjI0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggYzc3NDI0ODgwOTY4MDU5NmY0
Yzg0ZWE0ZTUwZTU2ODBiYmNkZTliYS4uODg2NjA0ZmU4NDZkMjkwZmNhNjE3YTZhNTA3MTc0NGEz
NTJmNDE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViTWVkaWFDb25zdHJhaW50cyhjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mKTsKKyAgICBXZWJNZWRpYUNvbnN0
cmFpbnRzKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKTsKICNlbmRpZgogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmNwcAppbmRleCAxMzM2ZjgyOGEwYjdiNDY4NzE3Y2RiNDkxYzgwZmE5
NjQ0Y2QyZWU5Li5iOWUzMDE0MWVmNDQxM2I2ZjlhY2QwNzhiZTljNmJjMGE2NGQ2MzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmNwcApAQCAtNTEsNiArNTEsMTEgQEAgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JgogICAgIHJldHVybiBvYmplY3QucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOworfQorCiBib29sIE1l
ZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnRzKQogewogICAgIGlmIChjb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5oCmluZGV4IDRhNzMxYzkwNDkxYzBhMmNkNmZiNmRlMTE5Y2Q2ZTk1ZjFkOTJlYmYu
LmNkYzc2YjljZmM1N2I3MzI1NTc0YzEyYTlkYWFkZmZkZDU4NmY1N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50cyB7CiBwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlv
bmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzSW1w
bCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCmluZGV4IGY4NWQ4OTMwNjFhNmVjZDRhYTdhYjU3
NWY0OTI2YzQwZTE5ZjBjN2UuLmMxNGJjMTBlMWNmNjE3OGM3MWI0NTNjYzU3ODE2YjcxMjIwZjhj
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmF2aWdh
dG9yTWVkaWFTdHJlYW06OndlYmtpdEdldFVzZXJNZWRpYShOYXZpZ2F0b3IqIG5hdmlnYXRvciwg
Y29uc3QgRGljdGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0b3It
PmZyYW1lKCktPmRvY3VtZW50KCksIHVzZXJNZWRpYSwgb3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKKyAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9
IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCks
IHVzZXJNZWRpYSwgb3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBlYyk7
CiAgICAgaWYgKCFyZXF1ZXN0KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGU2ZmMyZTcxNTRhZDcyMTZhMTc2ZDJl
MTI3MTAwNTdmNjMwOGNmOGYuLjEyZGMwZTg3NTQ0NTgwNGViYTY1N2YyYTU2ZTU2MDhlNzNhMzdk
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMzcsNyArMzcsOSBAQAogCiAjaW5jbHVkZSAiRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkxvY2FsTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFp
bnRzSW1wbC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgpAQCAt
NDUsMzEgKzQ3LDc2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50c0ltcGw+IHBhcnNlT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoY29udGV4dCwg
Y29udHJvbGxlciwgb3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci0g
ICAgaWYgKCFyZXF1ZXN0LT5hdWRpbygpICYmICFyZXF1ZXN0LT52aWRlbygpKQorICAgIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY29uc3RyYWludHM7CisKKyAgICBEaWN0aW9uYXJ5IGNv
bnN0cmFpbnRzRGljdGlvbmFyeTsKKyAgICBib29sIG9rID0gb3B0aW9ucy5nZXQobmFtZSwgY29u
c3RyYWludHNEaWN0aW9uYXJ5KTsKKyAgICBpZiAob2sgJiYgIWNvbnN0cmFpbnRzRGljdGlvbmFy
eS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpjcmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5LCBlYyk7CisgICAgZWxzZSB7
CisgICAgICAgIGJvb2wgZmxhZyA9IGZhbHNlOworICAgICAgICBvcHRpb25zLmdldChuYW1lLCBm
bGFnKTsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICBjb25zdHJhaW50cyA9IE1lZGlh
Q29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uc3RyYWlu
dHMucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRp
YVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVk
aWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4gYXVkaW8gPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQVNDSUlMaXRlcmFsKCJhdWRpbyIpLCBl
Yyk7CisgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzSW1wbD4gdmlkZW8gPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQVNDSUlMaXRlcmFs
KCJ2aWRlbyIpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlm
ICghYXVkaW8gJiYgIXZpZGVvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoY29u
dGV4dCwgY29udHJvbGxlciwgYXVkaW8ucmVsZWFzZSgpLCB2aWRlby5yZWxlYXNlKCksIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwogfQogCi1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJN
ZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29u
dHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gYXVk
aW8sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IHZpZGVvLCBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAg
OiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgICwgbV9hdWRpbyhmYWxz
ZSkKLSAgICAsIG1fdmlkZW8oZmFsc2UpCisgICAgLCBtX2F1ZGlvKGF1ZGlvKQorICAgICwgbV92
aWRlbyh2aWRlbykKICAgICAsIG1fY29udHJvbGxlcihjb250cm9sbGVyKQogICAgICwgbV9zdWNj
ZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2spCiB7Ci0gICAgb3B0aW9ucy5nZXQoImF1ZGlvIiwgbV9hdWRpbyk7Ci0gICAgb3B0
aW9ucy5nZXQoInZpZGVvIiwgbV92aWRlbyk7CiB9CiAKIFVzZXJNZWRpYVJlcXVlc3Q6On5Vc2Vy
TWVkaWFSZXF1ZXN0KCkKIHsKIH0KIAorYm9vbCBVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIChib29sKW1fYXVkaW87Cit9CisKK2Jvb2wgVXNlck1lZGlhUmVx
dWVzdDo6dmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiAoYm9vbCltX3ZpZGVvOworfQorCitN
ZWRpYUNvbnN0cmFpbnRzKiBVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0NvbnN0cmFpbnRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9hdWRpby5nZXQoKTsKK30KKworTWVkaWFDb25zdHJhaW50cyog
VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdmlkZW8uZ2V0KCk7Cit9CisKIERvY3VtZW50KiBVc2VyTWVkaWFSZXF1ZXN0Ojpvd25lckRv
Y3VtZW50KCkKIHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
CmluZGV4IGI1MzM0OGQyOTYzYzJiYTEzMjY4YjIyMTk0OGIzNTlmODU0ZjEzNGEuLjY0ZDBiMTdl
ZDlhMDY4M2M3NGUxYWNiNzhiMjI5ZTc5NjVjYTg5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCiAj
aW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgpAQCAtNDYsMTIgKzQ3
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIERv
Y3VtZW50OworY2xhc3MgTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJ
bXBsOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogY2xhc3MgVXNlck1lZGlhQ29udHJv
bGxlcjsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5
JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4pOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBh
c3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5V
c2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2sqIHN1Y2Nlc3NDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrLmdl
dCgpOyB9CkBAIC02NCwxOSArNjcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc3VjY2VlZChQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwogICAgIHZvaWQgZmFpbCgpOwogCisgICAg
TWVkaWFDb25zdHJhaW50cyogYXVkaW9Db25zdHJhaW50cygpIGNvbnN0OworICAgIE1lZGlhQ29u
c3RyYWludHMqIHZpZGVvQ29uc3RyYWludHMoKSBjb25zdDsKKwogICAgIC8vIE1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50Ci0gICAgdmlydHVhbCBib29sIGF1ZGlvKCkgY29uc3QgeyByZXR1
cm4gbV9hdWRpbzsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgdmlkZW8oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKIAogICAgIC8vIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAogcHJpdmF0
ZToKLSAgICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVk
aWFDb250cm9sbGVyKiwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2s+KTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzSW1wbD4gYXVkaW8sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IHZpZGVvLCBQ
YXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4pOwogCi0gICAgYm9vbCBtX2F1ZGlvOwot
ICAgIGJvb2wgbV92aWRlbzsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fYXVk
aW87CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX3ZpZGVvOwogCiAgICAgVXNl
ck1lZGlhQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFp
bnRzLmNwcAppbmRleCAwNWZhM2Y2NjZkMDE2MzFjYzkyYTkyN2Q1N2MwMzZhMTg4ZTU1OTBmLi4x
ZDI3MGNjZjgxYjhlMDI0YTUxYTFhNTk0OWY4ZGE5OTY5MDY5ODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVk
aWFDb25zdHJhaW50cy5jcHAKQEAgLTQ1LDYgKzQ1LDExIEBAIFdlYk1lZGlhQ29uc3RyYWludHM6
OldlYk1lZGlhQ29uc3RyYWludHMoY29uc3QgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYg
Y29uCiB7CiB9CiAKK1dlYk1lZGlhQ29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMoTWVk
aWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCisgICAgOiBtX3ByaXZhdGUoY29uc3RyYWludHMp
Cit7Cit9CisKIHZvaWQgV2ViTWVkaWFDb25zdHJhaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlh
Q29uc3RyYWludHMmIG90aGVyKQogewogICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVl
c3QuaAppbmRleCA2NjBkZjViYzFjNDhhMGNiZDI5YjJiZTAwMTZiYTQzMDAzYzk1MzE0Li4zYzg0
Njk2NDg2OTAyMGU0NmU2ZGI4ZWExM2M0ZWU1NmYwY2JhZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC00MSw2ICs0
MSw3IEBAIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViRG9jdW1lbnQ7CitjbGFzcyBXZWJNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3VyY2U7CiBjbGFzcyBX
ZWJTdHJpbmc7CkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCBhdWRpbygpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0
OworICAgIFdFQktJVF9FWFBPUlQgV2ViTWVkaWFDb25zdHJhaW50cyBhdWRpb0NvbnN0cmFpbnRz
KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJNZWRpYUNvbnN0cmFpbnRzIHZpZGVvQ29u
c3RyYWludHMoKSBjb25zdDsKIAogICAgIFdFQktJVF9FWFBPUlQgV2ViU2VjdXJpdHlPcmlnaW4g
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkRvY3VtZW50IG93
bmVyRG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggMjZmMTdjMzViOGViMWYzN2IyN2U1MGE0Zjhh
YmYwNTBjNjVjYzI4Yy4uZmZlY2IwYWVkM2M4MWM5YWNmNDUyMjg3ZTczMmFmYmQ1MzdhODkzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVz
dC5jcHAKQEAgLTM1LDE2ICszNSwxOCBAQAogI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3Qu
aCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJT
ZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9y
LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1l
ZGlhU3RyZWFtU291cmNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzMsNiArNzUsMTggQEAgYm9vbCBXZWJVc2VyTWVkaWFS
ZXF1ZXN0Ojp2aWRlbygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW8oKTsKIH0K
IAorV2ViTWVkaWFDb25zdHJhaW50cyBXZWJVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0NvbnN0cmFp
bnRzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5hdWRpb0NvbnN0cmFpbnRzKCk7Cit9CisKK1dlYk1lZGlhQ29uc3RyYWludHMgV2ViVXNl
ck1lZGlhUmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFp
c051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9Db25zdHJhaW50cygpOworfQor
CiBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc051bGwoKSAmJiBtX3ByaXZhdGUtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggY2JmYjA4MDU0M2MyZWI2MTM1MjI1MjhmNWFmZjgwZjYwYzI0MDRhYy4uMDk5
NjIxNmJmZDc4NTY0YTNmNDhmMTI0MzIxM2JkMTY1YjA1NjI1MSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5
LTI1ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1l
ZGlhU3RyZWFtIEFQSTogVXBkYXRlIGdldFVzZXJNZWRpYSB0byBtYXRjaCB0aGUgbGF0ZXN0IHNw
ZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkaW5nIG1vY2sgc3VwcG9ydCBmb3IgdGhlIGVuaGFuY2VkIGdldFVzZXJNZWRpYSBjYWxs
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29u
c3RyYWludHMuY3BwLgorICAgICAgICAoTW9ja0NvbnN0cmFpbnRzKToKKyAgICAgICAgKE1vY2tD
b25zdHJhaW50czo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoTW9ja0NvbnN0cmFpbnRzOjppc1Zh
bGlkKToKKyAgICAgICAgKE1vY2tDb25zdHJhaW50czo6dmVyaWZ5KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKE1vY2tDb25zdHJhaW50cyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6Cisg
ICAgICAgIChSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrOjpSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKToKKyAgICAgICAgKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrOjpSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
RmFpbGVkVGFzayk6CisgICAgICAgIChSVENWb2lkUmVxdWVzdFRhc2s6OlJUQ1ZvaWRSZXF1ZXN0
VGFzayk6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmNwcDoKKyAgICAgICAgKFVzZXJNZWRpYVJlcXVlc3RUYXNrKToKKyAgICAgICAgKFVz
ZXJNZWRpYVJlcXVlc3RUYXNrOjpVc2VyTWVkaWFSZXF1ZXN0VGFzayk6CisgICAgICAgIChXZWJV
c2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJV
c2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnRh
c2tMaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0wOS0y
NCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAg
W1F0XSBGaXggYnVpbGQgd2l0aCBsYXRlc3QgUXQgNQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKaW5kZXggODMyZmZjOTkxMmIwZGE4ZTZkYzkzOTA2NmNkZDlmNjBjMmZh
YmM3Zi4uMGMwMTE1MTQwYTQ2YzIzYmY0Zjg1MjhmM2U4MWU2YTJmOTdlMjQyMSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC04LDYgKzgsOCBAQAogICAgICAg
ICAgICAgJ2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmNwcCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL01vY2tHcmFtbWFyQ2hlY2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrR3Jh
bW1hckNoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmNwcCcs
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWlu
dHMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZDRjMGE2NTNjOTAzZmEwY2VlYzkyNGQ0M2IyZWVjZDg2OGRmM2I3Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0
cmFpbnRzLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKKworI2luY2x1
ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK25hbWVzcGFjZSBNb2NrQ29uc3RyYWludHMgeworCitzdGF0aWMgYm9vbCBpc1N1cHBv
cnRlZChjb25zdCBXZWJTdHJpbmcmIGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGNvbnN0cmFp
bnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMSIgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYW5k
X3N1cHBvcnRlZF8yIjsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZChjb25zdCBXZWJTdHJpbmcm
IGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGlzU3VwcG9ydGVkKGNvbnN0cmFpbnQpIHx8IGNv
bnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Cit9CisKK2Jvb2wgdmVyaWZ5KGNvbnN0IFdlYk1lZGlh
Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IG1h
bmRhdG9yeUNvbnN0cmFpbnROYW1lczsKKyAgICBjb25zdHJhaW50cy5nZXRNYW5kYXRvcnlDb25z
dHJhaW50TmFtZXMobWFuZGF0b3J5Q29uc3RyYWludE5hbWVzKTsKKyAgICBpZiAobWFuZGF0b3J5
Q29uc3RyYWludE5hbWVzLnNpemUoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYg
KCFpc1N1cHBvcnRlZChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0pKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdlYlN0cmluZyB2YWx1ZTsKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShtYW5kYXRvcnlDb25z
dHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMSIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgV2Vi
VmVjdG9yPFdlYlN0cmluZz4gb3B0aW9uYWxDb25zdHJhaW50TmFtZXM7CisgICAgY29uc3RyYWlu
dHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMob3B0aW9uYWxDb25zdHJhaW50TmFtZXMpOwor
ICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKG9wdGlvbmFsQ29uc3RyYWludE5hbWVzW2ldKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBXZWJTdHJpbmcgdmFsdWU7
CisgICAgICAgICAgICBjb25zdHJhaW50cy5nZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShvcHRp
b25hbENvbnN0cmFpbnROYW1lc1tpXSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlICE9
ICIwIikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzZlYmE1NzI4YTgwYzlj
NTRhMDBkZjA4NGE3YmIzMzM0ZTdjZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTW9ja0NvbnN0cmFpbnRzX2gKKyNkZWZpbmUgTW9ja0NvbnN0cmFpbnRzX2gKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFD
b25zdHJhaW50czsKK30KKworbmFtZXNwYWNlIE1vY2tDb25zdHJhaW50cyB7CisKK2Jvb2wgdmVy
aWZ5KGNvbnN0IFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50cyYpOworCit9IC8vIG5hbWVzcGFj
ZSBNb2NrQ29uc3RyYWludHMKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBNb2NrQ29uc3RyYWludHNfaAorCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwCmluZGV4IGIyZDUwZmViM2MyMjMxMmE5NzM0NGZkYjkzYzU0ZjdhMzc2YzQ3YjguLjQ1ZWI2
MDA1OTRiNWNkMjNkZWU1ODIxNDI3ZTYzY2I0OTJhYTUyOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKKyNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIK
ICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CkBAIC00NSw3ICs0Niw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRl
ZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PiB7CiBwdWJsaWM6Ci0gICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFz
ayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlc3VsdCkKKyAgICBSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9i
amVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCiAgICAgICAgIDogTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9y
ZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNTgsMTMgKzU5
LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0OjpXZWJSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKKyAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZXN1bHQ7CiB9
OwogCiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayA6IHB1Ymxp
YyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoK
LSAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCkKKyAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNv
bnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIDog
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAg
ICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgewpAQCAtNzYsMTIgKzc3LDEyIEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
IG1fcmVxdWVzdDsKIH07CiAKIGNsYXNzIFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRo
b2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBS
VENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0
LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHN1Y2NlZWRl
ZCkKKyAgICBSVENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ciogb2JqZWN0LCBjb25zdCBXZWJSVENWb2lkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzdWNjZWVk
ZWQpCiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9zdWNj
ZWVkZWQoc3VjY2VlZGVkKQpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFdlYktpdDo6V2ViUlRDVm9pZFJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYlJU
Q1ZvaWRSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3VjY2VlZGVkOwogfTsKIApAQCAt
MTA4LDQ1ICsxMDksOSBAQCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25uZQogewogfQogCi1zdGF0aWMg
Ym9vbCBpc1N1cHBvcnRlZENvbnN0cmFpbnQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQot
ewotICAgIHJldHVybiBjb25zdHJhaW50ID09ICJ2YWxpZF9hbmRfc3VwcG9ydGVkXzEiIHx8IGNv
bnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMiI7Ci19Ci0KLXN0YXRpYyBib29sIGlz
VmFsaWRDb25zdHJhaW50KGNvbnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKLXsKLSAgICByZXR1
cm4gaXNTdXBwb3J0ZWRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHx8IGNvbnN0cmFpbnQgPT0gInZh
bGlkX2J1dF91bnN1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBw
b3J0ZWRfMiI7Ci19Ci0KIGJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5p
dGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMpCiB7Ci0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gbWFuZGF0b3J5
Q29uc3RyYWludE5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRO
YW1lcyhtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMpOwotICAgIGlmIChtYW5kYXRvcnlDb25zdHJh
aW50TmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0
b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzU3Vw
cG9ydGVkQ29uc3RyYWludChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0pKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFdlYlN0cmluZyB2YWx1ZTsKLSAgICAg
ICAgICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShtYW5kYXRvcnlD
b25zdHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMSIp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
V2ViVmVjdG9yPFdlYlN0cmluZz4gb3B0aW9uYWxDb25zdHJhaW50TmFtZXM7Ci0gICAgY29uc3Ry
YWludHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMob3B0aW9uYWxDb25zdHJhaW50TmFtZXMp
OwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXplKCkpIHsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29uc3RyYWludChvcHRpb25hbENvbnN0cmFpbnRO
YW1lc1tpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgV2Vi
U3RyaW5nIHZhbHVlOwotICAgICAgICAgICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25zdHJh
aW50VmFsdWUob3B0aW9uYWxDb25zdHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKLSAgICAgICAgICAg
IGlmICh2YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE1vY2tDb25zdHJhaW50
czo6dmVyaWZ5KGNvbnN0cmFpbnRzKTsKIH0KIAogdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpjcmVhdGVPZmZlcihjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5jcHAKaW5kZXggYTM3M2MzYjMwN2Q2NTYzYWY0NmFjNzMyODdiYzU1ODM2OGJkNGQx
MC4uNjBhYjNkMjIzYjE5NDMyMmU5MjUwM2Q0MGE2YTBiODZmN2I4YjA2OSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5jcHAKQEAgLTMzLDE1ICszMyw0MSBAQAogCiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5oIgogCisjaW5jbHVkZSAiTW9ja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiV2ViRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
V2ViVXNlck1lZGlhUmVxdWVzdC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLW5h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworY2xhc3MgVXNlck1l
ZGlhUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
PiB7CitwdWJsaWM6CisgICAgVXNlck1lZGlhUmVxdWVzdFRhc2soV2ViVXNlck1lZGlhQ2xpZW50
TW9jayogb2JqZWN0LCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgcmVzdWx0KQorICAgICAgICA6IE1ldGhvZFRhc2s8V2Vi
VXNlck1lZGlhQ2xpZW50TW9jaz4ob2JqZWN0KQorICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0
KQorICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVzdWx0
LmlzTnVsbCgpKQorICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RGYWlsZWQoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQobV9yZXN1bHQp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IG1fcmVxdWVzdDsK
KyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgbV9yZXN1bHQ7Cit9OworCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjbGFzcyBNb2NrRXh0cmFEYXRhIDogcHVibGljIFdl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6RXh0cmFEYXRhIHsKIHB1YmxpYzoKQEAgLTU5LDcgKzg1
LDE4IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SCiAgICAgV2ViVXNlck1lZGlhUmVxdWVzdCBy
ZXF1ZXN0ID0gc3RyZWFtUmVxdWVzdDsKIAogICAgIGlmIChyZXF1ZXN0Lm93bmVyRG9jdW1lbnQo
KS5pc051bGwoKSB8fCAhcmVxdWVzdC5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAg
ICByZXF1ZXN0LnJlcXVlc3RGYWlsZWQoKTsKKyAgICAgICAgcG9zdFRhc2sobmV3IFVzZXJNZWRp
YVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRzIGNvbnN0
cmFpbnRzID0gcmVxdWVzdC5hdWRpb0NvbnN0cmFpbnRzKCk7CisgICAgaWYgKCFjb25zdHJhaW50
cy5pc051bGwoKSAmJiAhTW9ja0NvbnN0cmFpbnRzOjp2ZXJpZnkoY29uc3RyYWludHMpKSB7Cisg
ICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbnN0cmFpbnRzID0gcmVxdWVzdC52aWRlb0NvbnN0cmFpbnRzKCk7CisgICAgaWYgKCFjb25z
dHJhaW50cy5pc051bGwoKSAmJiAhTW9ja0NvbnN0cmFpbnRzOjp2ZXJpZnkoY29uc3RyYWludHMp
KSB7CisgICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1
ZXN0LCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03NCwxOCArMTExLDE2IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVx
dWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SCiAgICAgaWYg
KHJlcXVlc3QudmlkZW8oKSkKICAgICAgICAgdmlkZW9Tb3VyY2VzWzBdLmluaXRpYWxpemUoIk1v
Y2tWaWRlb0RldmljZSMxIiwgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgIk1vY2sg
dmlkZW8gZGV2aWNlIik7CiAKLSAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciBk
ZXNjcmlwdG9yOwotICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6ZSgiZm9vYmFyIiwgYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOworICAgIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciBzdHJlYW07
CisgICAgc3RyZWFtLmluaXRpYWxpemUoImZvb2JhciIsIGF1ZGlvU291cmNlcywgdmlkZW9Tb3Vy
Y2VzKTsKIAotICAgIGRlc2NyaXB0b3Iuc2V0RXh0cmFEYXRhKG5ldyBNb2NrRXh0cmFEYXRhKCkp
OworICAgIHN0cmVhbS5zZXRFeHRyYURhdGEobmV3IE1vY2tFeHRyYURhdGEoKSk7CiAKLSAgICBy
ZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoZGVzY3JpcHRvcik7CisgICAgcG9zdFRhc2sobmV3IFVz
ZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIHN0cmVhbSkpOwogfQogCiB2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNl
ck1lZGlhUmVxdWVzdCYpCiB7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCBlMjQxNTk4NWNiNmNjOTEx
OTNhNjRjMmU2ZDM4YzBmM2NiM2FlOGQ2Li45ZTFiZWJhNGEzYjBkY2Q3OTQ5YWQyYTg2ZmI4OWYw
YWZmNmM5OTUzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMywyOCArMzMsMzAgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVXNlck1l
ZGlhQ2xpZW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5j
bHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbW1vbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJs
aWMgV2ViVXNlck1lZGlhQ2xpZW50IHsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sgOiBw
dWJsaWMgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOwogICAgIH5XZWJVc2Vy
TWVkaWFDbGllbnRNb2NrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRp
YShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29u
c3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZT4mLCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dCYpOworCisgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBUYXNrTGlzdCogdGFza0xp
c3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2YXRlOgogICAgIFdlYlVzZXJNZWRp
YUNsaWVudE1vY2soKSB7IH0KLX07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorICAgIFRhc2tM
aXN0IG1fdGFza0xpc3Q7Cit9OwogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggNGEzNjI3
ZjkwZTkzZjQyYTY2NzcxNzY3NDI3NzM1NDBiODQ2ZDJmZS4uNzYzMmMyNjNkMzViODlhY2VlZjlk
ZTg5NDE3MWY2OGJkZTI0ZmQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIE1vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjsKIGNsYXNzIFNrQ2FudmFz
OwogY2xhc3MgVGVzdFNoZWxsOworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3Mg
V2ViU2hhcmVkV29ya2VyQ2xpZW50OwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOwog
Y2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKLWNsYXNzIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2s7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsK
IHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVudE1v
Y2soKTsKKyAgICBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7
CiAgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3Ry
ZWFtQ2xpZW50KCk7CiAjZW5kaWYKIApAQCAtNDMwLDcgKzQzMCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgT3duUHRyPFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaz4gbV91c2VyTWVkaWFDbGllbnRNb2NrOworICAgIE93blB0cjxXZWJV
c2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudE1vY2s7CiAgICAgT3duUHRyPHdl
YmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQ+IG1fdGVzdE1lZGlhU3RyZWFtQ2xp
ZW50OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NzM2Zjg2ODllZWM0MjBjMjUyNTkwMTQzNDY4NWJjMmI5
NTE4ZTQ0Li5mZTI0MTljNzM2NTE2YjU4MTFjNmQ0YTdkMGE5ZjU1YWJjMjgxZDY4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgZ2V0VXNlck1lZGlh
IHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRpbmcgdGVzdHMgdG8gY292ZXIgdGhlIG5l
dyBnZXRVc2VyTWVkaWEgYmVoYXZpb3VyLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLmh0bWw6CisKIDIwMTItMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBSZWJhc2VsaW5lIHNldmVyYWwg
dGVzdCBjYXNlcyBpbiBTa2lwcGVkIGxpc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCA5NDM3ZDkwZmM0ZjA1
NTJjMTVmODc4YjM2ZTk5ZTY5NTI0MDE1YjQyLi5jZjdhZTBlYzJkMWM0OGVmMGUzYzA4Y2NmZjQy
MTEwMzBmOWFhNmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dl
dHVzZXJtZWRpYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0zLDEzICszLDI3IEBAIFRlc3RzIHdlYmtp
dEdldFVzZXJNZWRpYS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHthdWRp
bzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzpmYWxzZX0sIGVycm9yLCBlcnJvcik7IHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbTEsIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0udmlkZW9UcmFja3Mu
bGVuZ3RoIGlzIDAKLVBBU1Mge3ZpZGVvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIsIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQQVNT
IHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMAogUEFTUyBzdHJlYW0udmlkZW9UcmFja3Mu
bGVuZ3RoIGlzIDEKLVBBU1Mge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9IGdlbmVyYXRlZCBzdHJl
YW0KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQor
UEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
U3RyZWFtIGdlbmVyYXRlZC4KK1BBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCitQ
QVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEn
OjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFs
aWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVk
XzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uYXVkaW9UcmFj
a3MubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXR1c2VybWVkaWEuaHRtbAppbmRleCAwZWI2N2IzNDFmOGJjMzg5MjMyNzM3M2ExMWVm
NGVjNmI4MDI5NDE4Li43NmM0MDMyZGU2ZTEwZmUyYjBjMWFiMWJkYmRjOWU1ZjViYjM1NzkzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKQEAg
LTEwLDQ3ICsxMCw3MCBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0cyB3ZWJraXRHZXRV
c2VyTWVkaWEuIik7CiAKK3ZhciBzdHJlYW07CisKIGZ1bmN0aW9uIGVycm9yKCkgewotICB0ZXN0
RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gIGZpbmlzaEpTVGVzdCgpOwor
ICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4nKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworZnVuY3Rpb24gZ290U3RyZWFtSW5FcnJvcihzKSB7CisgICAgdGVzdEZhaWxl
ZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIAotZnVuY3Rp
b24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrKSB7Ci0gIHRyeSB7Ci0gICAgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywgZXJyb3IpOwot
ICB9IGNhdGNoIChlKSB7Ci0gICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3
IGV4Y2VwdGlvbiA6JyArIGUpOworZnVuY3Rpb24gZ290U3RyZWFtNShzKSB7CisgICAgc3RyZWFt
ID0gczsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOworICAgIHNob3VsZEJl
KCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFt
LnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CiAgICAgZmluaXNoSlNUZXN0KCk7Ci0gIH0KK30K
KworZnVuY3Rpb24gZXJyb3IxKCkgeworICAgIHRlc3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGNh
bGxlZC4nKTsKKworICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9u
YWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW01LCBlcnJvcik7Iik7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbTQocykgeworICAgIHN0cmVh
bSA9IHM7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRC
ZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVh
bS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworCisgICAgc2hvdWxkTm90VGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJy
b3IsIGVycm9yMSk7Iik7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTMocykgewotICBzdHJlYW0g
PSBzOwotICB0ZXN0UGFzc2VkKCd7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0gZ2VuZXJhdGVkIHN0
cmVhbScpOwotICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0g
IHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgZmluaXNoSlNU
ZXN0KCk7CisgICAgc3RyZWFtID0gczsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVk
LicpOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAg
ICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisKKyAgICBzaG91
bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9y
eTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOwog
fQogCiBmdW5jdGlvbiBnb3RTdHJlYW0yKHMpIHsKLSAgc3RyZWFtID0gczsKLSAgdGVzdFBhc3Nl
ZCgne3ZpZGVvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0nKTsKLSAgc2hvdWxkQmUoJ3N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGgnLCAnMCcpOwotICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCcsICcxJyk7CisgICAgc3RyZWFtID0gczsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0g
Z2VuZXJhdGVkLicpOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywg
JzAnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CiAK
LSAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMyk7Cisg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRy
dWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7Iik7CiB9CiAKIGZ1bmN0aW9uIGdv
dFN0cmVhbTEocykgewotICBzdHJlYW0gPSBzOwotICB0ZXN0UGFzc2VkKCd7YXVkaW86dHJ1ZX0g
Z2VuZXJhdGVkIHN0cmVhbScpOwotICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0
aCcsICcxJyk7Ci0gIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzAnKTsK
KyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7Cisg
ICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3Vs
ZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzAnKTsKIAotICBnZXRVc2VyTWVkaWEo
e3ZpZGVvOnRydWV9LCBnb3RTdHJlYW0yKTsKKyAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIsIGVycm9yKTsiKQog
fQogCi1nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0xKTsKK3Nob3VsZFRocm93
KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86ZmFsc2V9
LCBlcnJvciwgZXJyb3IpOyIpCitzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbTEsIGVycm9yKTsiKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165746</attachid>
            <date>2012-09-26 01:15:08 -0700</date>
            <delta_ts>2012-09-26 09:23:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97540-20120926101427.patch</filename>
            <type>text/plain</type>
            <size>42255</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjMDJiOTRmYjY3ZTZk
ZTA5NWI1OGI1Y2NmYjAyODNiNGVhNzViMDNhLi5mYTg3ZWIwZGEwZDczYzYxNTkxZDVkNzg4Mjc3
NzNhNTVhYzA0NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOS0yNSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBnZXRVc2VyTWVkaWEgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaDoKKyAgICAgICAgKFdlYk1lZGlh
Q29uc3RyYWludHMpOgorCiAyMDEyLTA5LTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5NTE3
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDE3NWY3YmY3MzhlYjdkNzQ3ZjIzZWQwNjJlMDk0MzRkMTcyOTIxMDAu
LmFhNzkwMTZmMmM0MDI1MWUwYmU2ZjRiY2ZkMDg3MmU2Njg1NGU3YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMi0wOS0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBnZXRVc2VyTWVkaWEg
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2Vk
aXRvci9nZXR1c2VybWVkaWEuaHRtbCNuYXZpZ2F0b3J1c2VybWVkaWEKKyAgICAgICAgTmF2aWdh
dG9yLmdldFVzZXJNZWRpYSBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhlIGF1ZGlvIGFuZCB2aWRlbyBt
ZW1iZXJzIGNhbiBlaXRoZXIKKyAgICAgICAgYmUgYSBib29sIG9yIGEgY29uc3RyYWludHMgb2Jq
ZWN0LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGV4cGFuZGVkIHRvIGNvdmVyIHRoZSBuZXcg
Y2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuaDoKKyAgICAgICAgKE1lZGlhQ29uc3RyYWludHNJbXBsKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhU3RyZWFtOjp3ZWJraXRHZXRVc2VyTWVkaWEp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Ojp2aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRp
b0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVv
Q29uc3RyYWludHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0
cmFpbnRzKToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDktMjUgIFBhdHJpY2sgR2Fuc3Rl
cmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dJTl0gRml4IEFTU0VSVCBpbiBC
U3RyaW5nIGFmdGVyIHIxMjg5ODguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRhM2Vk
ZWM5ZTU2NDIyZGEzNjE2ZWI5M2Q3MWE1MWVkN2ViZDA5NmMuLmVmMjRjZjJlNjQwZDcyNmU5N2Vk
NTdhZDZjNGU5ODM2MDUwYjMxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTItMDktMjUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5j
b20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgZ2V0VXNlck1lZGlhIHRvIG1h
dGNoIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3Iv
Z2V0dXNlcm1lZGlhLmh0bWwjbmF2aWdhdG9ydXNlcm1lZGlhCisgICAgICAgIE5hdmlnYXRvci5n
ZXRVc2VyTWVkaWEgaXMgY2hhbmdlZCBzbyB0aGF0IHRoZSBhdWRpbyBhbmQgdmlkZW8gbWVtYmVy
cyBjYW4gZWl0aGVyCisgICAgICAgIGJlIGEgYm9vbCBvciBhIGNvbnN0cmFpbnRzIG9iamVjdC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0
OjphdWRpb0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvQ29uc3RyYWludHMpOgorCiAyMDEyLTA5LTI1ICBB
bHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUm9s
bCBERVBTIGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggYzc3NDI0ODgwOTY4MDU5NmY0Yzg0
ZWE0ZTUwZTU2ODBiYmNkZTliYS4uNTBjNTBjYWFjN2M2YWIyNzE5ZjJmZDY5NmE2NmYzYmRkYjVi
ZTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpOwogCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQogCiAgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgbmFtZXMpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBnZXRPcHRp
b25hbENvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMpIGNvbnN0OwpA
QCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAg
ICBXZWJNZWRpYUNvbnN0cmFpbnRzKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzPiYpOworICAgIFdlYk1lZGlhQ29uc3RyYWludHMoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50cyopOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCmlu
ZGV4IDEzMzZmODI4YTBiN2I0Njg3MTdjZGI0OTFjODBmYTk2NDRjZDJlZTkuLmI5ZTMwMTQxZWY0
NDEzYjZmOWFjZDA3OGJlOWM2YmMwYTY0ZDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCkBA
IC01MSw2ICs1MSwxMSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmCiAgICAgcmV0dXJuIG9iamVj
dC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IE1lZGlh
Q29uc3RyYWludHNJbXBsOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFDb25zdHJhaW50c0ltcGwoKSk7Cit9CisKIGJvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6Omlu
aXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCiB7CiAgICAgaWYgKGNvbnN0
cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKaW5kZXggNGE3MzFj
OTA0OTFjMGEyY2Q2ZmI2ZGUxMTljZDZlOTVmMWQ5MmViZi4uY2RjNzZiOWNmYzU3YjczMjU1NzRj
MTJhOWRhYWRmZmRkNTg2ZjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApAQCAtNDMsNiArNDMsNyBA
QCBjbGFzcyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1Ymxp
YyBNZWRpYUNvbnN0cmFpbnRzIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVh
bS5jcHAKaW5kZXggZjg1ZDg5MzA2MWE2ZWNkNGFhN2FiNTc1ZjQ5MjZjNDBlMTlmMGM3ZS4uYzE0
YmMxMGUxY2Y2MTc4YzcxYjQ1M2NjNTc4MTZiNzEyMjBmOGNhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVh
bS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBOYXZpZ2F0b3JNZWRpYVN0cmVhbTo6d2Via2l0
R2V0VXNlck1lZGlhKE5hdmlnYXRvciogbmF2aWdhdG9yLCBjb25zdCBEaWN0aW8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKG5hdmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwg
dXNlck1lZGlhLCBvcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAg
IFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3Jl
YXRlKG5hdmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgdXNlck1lZGlhLCBvcHRpb25zLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGVjKTsKICAgICBpZiAoIXJlcXVlc3QpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAKaW5kZXggZTZmYzJlNzE1NGFkNzIxNmExNzZkMmUxMjcxMDA1N2Y2MzA4Y2Y4Zi4uYjk0
OTQwMDJhOTJmNGNlMWNmYzlmYzNiM2JjZjMyYWUzNjhjZDM3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBA
IC0zNyw3ICszNyw5IEBACiAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9jYWxNZWRp
YVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCkBAIC00NSwzMSArNDcsNzQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRp
YVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVk
aWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCitzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gcGFyc2VPcHRpb25z
KGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9
IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGNvbnRleHQsIGNvbnRyb2xsZXIsIG9wdGlv
bnMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAgIGlmICghcmVxdWVzdC0+
YXVkaW8oKSAmJiAhcmVxdWVzdC0+dmlkZW8oKSkKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IGNvbnN0cmFpbnRzOworCisgICAgRGljdGlvbmFyeSBjb25zdHJhaW50c0RpY3Rpb25h
cnk7CisgICAgYm9vbCBvayA9IG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwgY29uc3RyYWludHNEaWN0
aW9uYXJ5KTsKKyAgICBpZiAob2sgJiYgIWNvbnN0cmFpbnRzRGljdGlvbmFyeS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQorICAgICAgICBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpj
cmVhdGUoY29uc3RyYWludHNEaWN0aW9uYXJ5LCBlYyk7CisgICAgZWxzZSB7CisgICAgICAgIGJv
b2wgbWVkaWFSZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICAgICAgb3B0aW9ucy5nZXQobWVkaWFUeXBl
LCBtZWRpYVJlcXVlc3RlZCk7CisgICAgICAgIGlmIChtZWRpYVJlcXVlc3RlZCkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZSgpOworICAgIH0K
KworICAgIHJldHVybiBjb25zdHJhaW50cy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBhdWRpbyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBB
U0NJSUxpdGVyYWwoImF1ZGlvIiksIGVjKTsKKyAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gdmlkZW8gPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQVNDSUlMaXRlcmFsKCJ2
aWRlbyIpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICgh
YXVkaW8gJiYgIXZpZGVvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVXNlck1lZGlhUmVxdWVzdChjb250ZXh0LCBjb250cm9sbGVyLCBhdWRpby5yZWxlYXNl
KCksIHZpZGVvLnJlbGVhc2UoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9
CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVy
KiBjb250cm9sbGVyLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBhdWRpbywgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gdmlkZW8sIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICA6IENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCi0gICAgLCBtX2F1ZGlvKGZhbHNlKQotICAg
ICwgbV92aWRlbyhmYWxzZSkKKyAgICAsIG1fYXVkaW8oYXVkaW8pCisgICAgLCBtX3ZpZGVvKHZp
ZGVvKQogICAgICwgbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgLCBtX3N1Y2Nlc3NDYWxs
YmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFj
aykKIHsKLSAgICBvcHRpb25zLmdldCgiYXVkaW8iLCBtX2F1ZGlvKTsKLSAgICBvcHRpb25zLmdl
dCgidmlkZW8iLCBtX3ZpZGVvKTsKIH0KIAogVXNlck1lZGlhUmVxdWVzdDo6flVzZXJNZWRpYVJl
cXVlc3QoKQogewogfQogCitib29sIFVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9hdWRpbzsKK30KKworYm9vbCBVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlbygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlkZW87Cit9CisKK01lZGlhQ29uc3RyYWludHMqIFVz
ZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvQ29uc3RyYWludHMoKSBjb25zdAoreworICAgIHJldHVybiBt
X2F1ZGlvLmdldCgpOworfQorCitNZWRpYUNvbnN0cmFpbnRzKiBVc2VyTWVkaWFSZXF1ZXN0Ojp2
aWRlb0NvbnN0cmFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aWRlby5nZXQoKTsKK30K
KwogRG9jdW1lbnQqIFVzZXJNZWRpYVJlcXVlc3Q6Om93bmVyRG9jdW1lbnQoKQogewogICAgIGlm
IChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggYjUzMzQ4ZDI5NjNj
MmJhMTMyNjhiMjIxOTQ4YjM1OWY4NTRmMTM0YS4uNjRkMGIxN2VkOWEwNjgzYzc0ZTFhY2I3OGIy
MjllNzk2NWNhODk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQmFzZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCkBAIC00NiwxMiArNDcsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRp
YUNvbnN0cmFpbnRzOworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRpYVN0
cmVhbURlc2NyaXB0b3I7CiBjbGFzcyBVc2VyTWVkaWFDb250cm9sbGVyOwogCiBjbGFzcyBVc2Vy
TWVkaWFSZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VXNlck1lZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQ
dHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250
cm9sbGVyKiwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsK
IAogICAgIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KQEAgLTY0LDE5ICs2
NywyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWNjZWVkKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPik7CiAgICAgdm9pZCBmYWlsKCk7CiAKKyAgICBNZWRpYUNvbnN0cmFpbnRzKiBh
dWRpb0NvbnN0cmFpbnRzKCkgY29uc3Q7CisgICAgTWVkaWFDb25zdHJhaW50cyogdmlkZW9Db25z
dHJhaW50cygpIGNvbnN0OworCiAgICAgLy8gTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQK
LSAgICB2aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvOyB9Ci0gICAg
dmlydHVhbCBib29sIHZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV92aWRlbzsgfQorICAgIHZpcnR1
YWwgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZXMpOwogCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25z
dCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4p
OworICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRp
YUNvbnRyb2xsZXIqLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBhdWRpbywgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gdmlkZW8sIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrPik7CiAKLSAgICBib29sIG1fYXVkaW87Ci0gICAgYm9vbCBtX3ZpZGVvOwor
ICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gbV9hdWRpbzsKKyAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50c0ltcGw+IG1fdmlkZW87CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBt
X2NvbnRyb2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IDA1ZmEz
ZjY2NmQwMTYzMWNjOTJhOTI3ZDU3YzAzNmExODhlNTU5MGYuLjlkZWE0MjQzMjAwNzVjOGY3ZjNh
N2NhMjhiNDE2MTUxNjVkMzRjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcApA
QCAtNDUsNiArNDUsMTEgQEAgV2ViTWVkaWFDb25zdHJhaW50czo6V2ViTWVkaWFDb25zdHJhaW50
cyhjb25zdCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+JiBjb24KIHsKIH0KIAorV2ViTWVk
aWFDb25zdHJhaW50czo6V2ViTWVkaWFDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykKKyAgICA6IG1fcHJpdmF0ZShjb25zdHJhaW50cykKK3sKK30KKwogdm9pZCBXZWJN
ZWRpYUNvbnN0cmFpbnRzOjphc3NpZ24oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIp
CiB7CiAgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwpAQCAtNTUsMTEgKzYwLDYgQEAg
dm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpyZXNldCgpCiAgICAgbV9wcml2YXRlLnJlc2V0KCk7
CiB9CiAKLWJvb2wgV2ViTWVkaWFDb25zdHJhaW50czo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOwotfQotCiB2b2lkIFdlYk1lZGlhQ29uc3RyYWludHM6
OmdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggNjYwZGY1YmMxYzQ4
YTBjYmQyOWIyYmUwMDE2YmE0MzAwM2M5NTMxNC4uM2M4NDY5NjQ4NjkwMjBlNDZlNmRiOGVhMTNj
NGVlNTZmMGNiYWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYVJlcXVlc3QuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkRvY3VtZW50OworY2xhc3Mg
V2ViTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIGNs
YXNzIFdlYk1lZGlhU3RyZWFtU291cmNlOwogY2xhc3MgV2ViU3RyaW5nOwpAQCAtNjUsNiArNjYs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYXVkaW8oKSBjb25zdDsKICAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgdmlkZW8oKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdl
Yk1lZGlhQ29uc3RyYWludHMgYXVkaW9Db25zdHJhaW50cygpIGNvbnN0OworICAgIFdFQktJVF9F
WFBPUlQgV2ViTWVkaWFDb25zdHJhaW50cyB2aWRlb0NvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAg
ICBXRUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7
CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJEb2N1bWVudCBvd25lckRvY3VtZW50KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3Bw
CmluZGV4IDI2ZjE3YzM1YjhlYjFmMzdiMjdlNTBhNGY4YWJmMDUwYzY1Y2MyOGMuLmZmZWNiMGFl
ZDNjODFjOWFjZjQ1MjI4N2U3MzJhZmJkNTM3YTg5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0zNSwxNiArMzUsMTgg
QEAKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogI2luY2x1
ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJNZWRpYUNvbnN0cmFpbnRzLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTczLDYgKzc1LDE4IEBAIGJvb2wgV2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW8oKSBjb25zdAog
ICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7CiB9CiAKK1dlYk1lZGlhQ29uc3RyYWludHMg
V2ViVXNlck1lZGlhUmVxdWVzdDo6YXVkaW9Db25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFpc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9Db25zdHJhaW50cygp
OworfQorCitXZWJNZWRpYUNvbnN0cmFpbnRzIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvQ29u
c3RyYWludHMoKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBt
X3ByaXZhdGUtPnZpZGVvQ29uc3RyYWludHMoKTsKK30KKwogV2ViU2VjdXJpdHlPcmlnaW4gV2Vi
VXNlck1lZGlhUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewogICAgIEFTU0VSVCgh
aXNOdWxsKCkgJiYgbV9wcml2YXRlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ1M2RmZTI0ODIy
ZmI0YTNmM2NmYTNjM2UyOGNmMzI2NDkzMDM5NmYuLmEzMDU2MzMxNzlmNGJmMWM0MGQyYmNhNTMy
MGM3ZTNiMmY3OTc5NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0yNSAgVG9tbXkgV2lkZW5mbHljaHQg
IDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBn
ZXRVc2VyTWVkaWEgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBtb2NrIHN1cHBvcnQg
Zm9yIHRoZSBlbmhhbmNlZCBnZXRVc2VyTWVkaWEgY2FsbC4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja0NvbnN0cmFpbnRzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcC4KKyAgICAgICAg
KE1vY2tDb25zdHJhaW50cyk6CisgICAgICAgIChNb2NrQ29uc3RyYWludHM6OmlzU3VwcG9ydGVk
KToKKyAgICAgICAgKE1vY2tDb25zdHJhaW50czo6aXNWYWxpZCk6CisgICAgICAgIChNb2NrQ29u
c3RyYWludHM6OnZlcmlmeSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a0NvbnN0cmFpbnRzLmg6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChN
b2NrQ29uc3RyYWludHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzazo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1
Y2NlZGVkVGFzayk6CisgICAgICAgIChSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVk
VGFzazo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2spOgorICAgICAgICAo
UlRDVm9pZFJlcXVlc3RUYXNrOjpSVENWb2lkUmVxdWVzdFRhc2spOgorICAgICAgICAoTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChV
c2VyTWVkaWFSZXF1ZXN0VGFzayk6CisgICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0VGFzazo6VXNl
ck1lZGlhUmVxdWVzdFRhc2spOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVx
dWVzdFVzZXJNZWRpYSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jayk6Cisg
ICAgICAgIChXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTItMDktMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIG1hc3Rlci5jZmcgdG8gaW52b2tlIHJ1bi1w
ZXJmLXRlc3RzIHdpdGggLS1uby1zaG93LXJlc3VsdHMgYW5kIC0tcmVzZXQtcmVzdWx0cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggODMyZmZjOTkxMmIwZGE4
ZTZkYzkzOTA2NmNkZDlmNjBjMmZhYmM3Zi4uMGMwMTE1MTQwYTQ2YzIzYmY0Zjg1MjhmM2U4MWU2
YTJmOTdlMjQyMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBA
IC04LDYgKzgsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAg
J2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9ja0Nv
bnN0cmFpbnRzLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tHcmFtbWFyQ2hlY2suY3BwJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9Nb2NrR3JhbW1hckNoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tTcGVsbENoZWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja0NvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDRjMGE2NTNjOTAzZmEwY2VlYzky
NGQ0M2IyZWVjZDg2OGRmM2I3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNb2NrQ29u
c3RyYWludHMuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBNb2NrQ29uc3RyYWludHMgewor
CitzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBXZWJTdHJpbmcmIGNvbnN0cmFpbnQpCit7
CisgICAgcmV0dXJuIGNvbnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMSIgfHwgY29u
c3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8yIjsKK30KKworc3RhdGljIGJvb2wgaXNW
YWxpZChjb25zdCBXZWJTdHJpbmcmIGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGlzU3VwcG9y
dGVkKGNvbnN0cmFpbnQpIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8x
IiB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Cit9CisKK2Jvb2wg
dmVyaWZ5KGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQoreworICAgIFdl
YlZlY3RvcjxXZWJTdHJpbmc+IG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lczsKKyAgICBjb25zdHJh
aW50cy5nZXRNYW5kYXRvcnlDb25zdHJhaW50TmFtZXMobWFuZGF0b3J5Q29uc3RyYWludE5hbWVz
KTsKKyAgICBpZiAobWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKSkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnRlZChtYW5kYXRvcnlDb25zdHJhaW50TmFt
ZXNbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdlYlN0
cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFp
bnRWYWx1ZShtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSAhPSAiMSIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gb3B0aW9uYWxDb25zdHJhaW50
TmFtZXM7CisgICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMob3B0aW9u
YWxDb25zdHJhaW50TmFtZXMpOworICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXpl
KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRO
YW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKG9wdGlvbmFsQ29u
c3RyYWludE5hbWVzW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBXZWJTdHJpbmcgdmFsdWU7CisgICAgICAgICAgICBjb25zdHJhaW50cy5nZXRPcHRpb25h
bENvbnN0cmFpbnRWYWx1ZShvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSwgdmFsdWUpOworICAg
ICAgICAgICAgaWYgKHZhbHVlICE9ICIwIikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgTW9ja0NvbnN0cmFpbnRzCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzZlYmE1NzI4YTgwYzljNTRhMDBkZjA4NGE3YmIzMzM0ZTdjZmY5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja0NvbnN0cmFpbnRzX2gKKyNkZWZpbmUgTW9ja0Nv
bnN0cmFpbnRzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKK30KKworbmFtZXNwYWNlIE1vY2tDb25z
dHJhaW50cyB7CisKK2Jvb2wgdmVyaWZ5KGNvbnN0IFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50
cyYpOworCit9IC8vIG5hbWVzcGFjZSBNb2NrQ29uc3RyYWludHMKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNb2NrQ29uc3RyYWludHNfaAorCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGIyZDUwZmViM2MyMjMxMmE5NzM0NGZkYjkz
YzU0ZjdhMzc2YzQ3YjguLjQ1ZWI2MDA1OTRiNWNkMjNkZWU1ODIxNDI3ZTYzY2I0OTJhYTUyOWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKKyNpbmNsdWRl
ICJNb2NrQ29uc3RyYWludHMuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50
cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CkBAIC00NSw3
ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CiBwdWJsaWM6Ci0gICAgUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBv
YmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlc3VsdCkKKyAg
ICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQp
CiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihv
YmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICwgbV9yZXN1bHQo
cmVzdWx0KQpAQCAtNTgsMTMgKzU5LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKLSAg
ICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKKyAgICBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb24gbV9yZXN1bHQ7CiB9OwogCiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0RmFpbGVkVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFp
bGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdl
YktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCkKKyAgICBSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgewpAQCAt
NzYsMTIgKzc3LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0OjpX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKIH07CiAKIGNsYXNzIFJUQ1ZvaWRSZXF1
ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI+IHsKIHB1YmxpYzoKLSAgICBSVENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1ZvaWRSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIHN1Y2NlZWRlZCkKKyAgICBSVENWb2lkUmVxdWVzdFRhc2soTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENWb2lkUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBzdWNjZWVkZWQpCiAgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVl
c3QpCiAgICAgICAgICwgbV9zdWNjZWVkZWQoc3VjY2VlZGVkKQpAQCAtOTcsNyArOTgsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdlYktpdDo6V2ViUlRDVm9pZFJlcXVlc3Qg
bV9yZXF1ZXN0OworICAgIFdlYlJUQ1ZvaWRSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1f
c3VjY2VlZGVkOwogfTsKIApAQCAtMTA4LDQ1ICsxMDksOSBAQCBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJD
b25uZQogewogfQogCi1zdGF0aWMgYm9vbCBpc1N1cHBvcnRlZENvbnN0cmFpbnQoY29uc3QgV2Vi
U3RyaW5nJiBjb25zdHJhaW50KQotewotICAgIHJldHVybiBjb25zdHJhaW50ID09ICJ2YWxpZF9h
bmRfc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMiI7
Ci19Ci0KLXN0YXRpYyBib29sIGlzVmFsaWRDb25zdHJhaW50KGNvbnN0IFdlYlN0cmluZyYgY29u
c3RyYWludCkKLXsKLSAgICByZXR1cm4gaXNTdXBwb3J0ZWRDb25zdHJhaW50KGNvbnN0cmFpbnQp
IHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50
ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Ci19Ci0KIGJvb2wgTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7Ci0gICAgV2ViVmVjdG9y
PFdlYlN0cmluZz4gbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzOwotICAgIGNvbnN0cmFpbnRzLmdl
dE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMpOwotICAg
IGlmIChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkQ29uc3RyYWludChtYW5kYXRvcnlDb25zdHJhaW50
TmFtZXNbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFdl
YlN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0
cmFpbnRWYWx1ZShtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKLSAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPSAiMSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gb3B0aW9uYWxDb25zdHJh
aW50TmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMob3B0
aW9uYWxDb25zdHJhaW50TmFtZXMpOwotICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnROYW1lcy5z
aXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFp
bnROYW1lcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29uc3RyYWlu
dChvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgV2ViU3RyaW5nIHZhbHVlOwotICAgICAgICAgICAgY29uc3RyYWlu
dHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUob3B0aW9uYWxDb25zdHJhaW50TmFtZXNbaV0s
IHZhbHVlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMCIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIE1vY2tDb25zdHJhaW50czo6dmVyaWZ5KGNvbnN0cmFpbnRzKTsKIH0KIAogdm9pZCBN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVPZmZlcihjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFp
bnRzJiBjb25zdHJhaW50cykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKaW5kZXggYTM3M2MzYjMwN2Q2NTYzYWY0
NmFjNzMyODdiYzU1ODM2OGJkNGQxMC4uNjBhYjNkMjIzYjE5NDMyMmU5MjUwM2Q0MGE2YTBiODZm
N2I4YjA2OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTMzLDE1ICszMyw0MSBAQAogCiAjaW5jbHVk
ZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogCisjaW5jbHVkZSAiTW9ja0NvbnN0cmFpbnRz
LmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3Ry
ZWFtU291cmNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworY2xhc3MgVXNlck1lZGlhUmVxdWVzdFRhc2sgOiBwdWJsaWMgTWV0aG9kVGFzazxX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrPiB7CitwdWJsaWM6CisgICAgVXNlck1lZGlhUmVxdWVzdFRh
c2soV2ViVXNlck1lZGlhQ2xpZW50TW9jayogb2JqZWN0LCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgcmVzdWx0KQorICAg
ICAgICA6IE1ldGhvZFRhc2s8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4ob2JqZWN0KQorICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsK
KyAgICAgICAgaWYgKG1fcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICAgICAgbV9yZXF1ZXN0LnJl
cXVlc3RGYWlsZWQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVl
c3RTdWNjZWVkZWQobV9yZXN1bHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJVc2VyTWVk
aWFSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgbV9yZXN1
bHQ7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjbGFzcyBNb2Nr
RXh0cmFEYXRhIDogcHVibGljIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6RXh0cmFEYXRhIHsK
IHB1YmxpYzoKQEAgLTU5LDcgKzg1LDE4IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6
cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SCiAgICAg
V2ViVXNlck1lZGlhUmVxdWVzdCByZXF1ZXN0ID0gc3RyZWFtUmVxdWVzdDsKIAogICAgIGlmIChy
ZXF1ZXN0Lm93bmVyRG9jdW1lbnQoKS5pc051bGwoKSB8fCAhcmVxdWVzdC5vd25lckRvY3VtZW50
KCkuZnJhbWUoKSkgewotICAgICAgICByZXF1ZXN0LnJlcXVlc3RGYWlsZWQoKTsKKyAgICAgICAg
cG9zdFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIFdlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvcigpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJN
ZWRpYUNvbnN0cmFpbnRzIGNvbnN0cmFpbnRzID0gcmVxdWVzdC5hdWRpb0NvbnN0cmFpbnRzKCk7
CisgICAgaWYgKCFjb25zdHJhaW50cy5pc051bGwoKSAmJiAhTW9ja0NvbnN0cmFpbnRzOjp2ZXJp
ZnkoY29uc3RyYWludHMpKSB7CisgICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0
VGFzayh0aGlzLCByZXF1ZXN0LCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoKSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNvbnN0cmFpbnRzID0gcmVxdWVzdC52aWRlb0NvbnN0cmFp
bnRzKCk7CisgICAgaWYgKCFjb25zdHJhaW50cy5pc051bGwoKSAmJiAhTW9ja0NvbnN0cmFpbnRz
Ojp2ZXJpZnkoY29uc3RyYWludHMpKSB7CisgICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFS
ZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NCwxOCArMTExLDE2IEBAIHZvaWQgV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0JiBzdHJlYW1SCiAgICAgaWYgKHJlcXVlc3QudmlkZW8oKSkKICAgICAgICAgdmlkZW9Tb3Vy
Y2VzWzBdLmluaXRpYWxpemUoIk1vY2tWaWRlb0RldmljZSMxIiwgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlR5cGVWaWRlbywgIk1vY2sgdmlkZW8gZGV2aWNlIik7CiAKLSAgICBXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6
ZSgiZm9vYmFyIiwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworICAgIFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciBzdHJlYW07CisgICAgc3RyZWFtLmluaXRpYWxpemUoImZvb2JhciIsIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKIAotICAgIGRlc2NyaXB0b3Iuc2V0RXh0cmFEYXRh
KG5ldyBNb2NrRXh0cmFEYXRhKCkpOworICAgIHN0cmVhbS5zZXRFeHRyYURhdGEobmV3IE1vY2tF
eHRyYURhdGEoKSk7CiAKLSAgICByZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoZGVzY3JpcHRvcik7
CisgICAgcG9zdFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIHN0
cmVhbSkpOwogfQogCiB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpCiB7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApp
bmRleCBlMjQxNTk4NWNiNmNjOTExOTNhNjRjMmU2ZDM4YzBmM2NiM2FlOGQ2Li45ZTFiZWJhNGEz
YjBkY2Q3OTQ5YWQyYTg2ZmI4OWYwYWZmNmM5OTUzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMywyOCAr
MzMsMzAgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMLmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJl
YW1fY2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbW1vbi5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgV2ViVXNlck1lZGlhQ2xpZW50IHsKK2NsYXNzIFdlYlVz
ZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IGNy
ZWF0ZSgpOwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRp
YVN0cmVhbVNvdXJjZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1l
ZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29u
c3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZT4mLCBjb25z
dCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlPiYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktp
dDo6V2ViVXNlck1lZGlhUmVxdWVzdCYpOworCisgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMK
KyAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiBwcml2
YXRlOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLX07CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAorICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7Cit9OwogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKaW5kZXggNGEzNjI3ZjkwZTkzZjQyYTY2NzcxNzY3NDI3NzM1NDBiODQ2ZDJmZS4u
NzYzMmMyNjNkMzViODlhY2VlZjlkZTg5NDE3MWY2OGJkZTI0ZmQ3OCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNz
IE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBNb2NrV2ViU3BlZWNoUmVjb2du
aXplcjsKIGNsYXNzIFNrQ2FudmFzOwogY2xhc3MgVGVzdFNoZWxsOworY2xhc3MgV2ViVXNlck1l
ZGlhQ2xpZW50TW9jazsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKQEAg
LTY2LDcgKzY3LDYgQEAgY2xhc3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50OwogY2xhc3MgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNz
IFdlYlVSTDsKLWNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s7CiBzdHJ1Y3QgV2ViUmVjdDsK
IHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKQEAgLTM0Myw3
ICszNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1v
Y2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsKKyAgICBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1
c2VyTWVkaWFDbGllbnRNb2NrKCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVh
bUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7CiAjZW5kaWYKIApAQCAtNDMwLDcgKzQz
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAg
T3duUHRyPFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbV91c2VyTWVkaWFDbGllbnRN
b2NrOworICAgIE93blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVu
dE1vY2s7CiAgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQ+
IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxOGIzMWJjZTRkZmNk
MWRkM2IxMjY3MTVjODE0MTdkNWYzYjg5Y2FmLi42NDFhYmQwNGZkMTA5ZTY4MWMzMWMzMGY4ZDNm
MTYwZmIzZDMzMTc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjUgIFRvbW15IFdp
ZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJ
OiBVcGRhdGUgZ2V0VXNlck1lZGlhIHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRpbmcg
dGVzdHMgdG8gY292ZXIgdGhlIG5ldyBnZXRVc2VyTWVkaWEgYmVoYXZpb3VyLgorCisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWw6CisKIDIwMTItMDktMjYgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gVW5za2lwIHBhc3NpbmcgdGVzdCBhZnRlciByMTI5NTkyLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0
CmluZGV4IDk0MzdkOTBmYzRmMDU1MmMxNWY4NzhiMzZlOTllNjk1MjQwMTViNDIuLmNmN2FlMGVj
MmQxYzQ4ZWYwZTNjMDhjY2ZmNDIxMTAzMGY5YWE2YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKQEAgLTMsMTMg
KzMsMjcgQEAgVGVzdHMgd2Via2l0R2V0VXNlck1lZGlhLgogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKLVBBU1Mge2F1ZGlvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOmZhbHNlfSwgZXJyb3Is
IGVycm9yKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4
Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVl
fSwgZ290U3RyZWFtMSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNT
IHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMAotUEFTUyB7dmlkZW86dHJ1ZX0gZ2VuZXJh
dGVkIHN0cmVhbQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbzp0cnVl
fSwgZ290U3RyZWFtMiwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAwCiBQQVNT
IHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQotUEFTUyB7YXVkaW86dHJ1ZSwgdmlkZW86
dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMywgZXJyb3IpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KK1BBU1Mgc3RyZWFtLmF1ZGlv
VHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBv
cHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxp
ZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJv
ciBjYWxsYmFjayBjYWxsZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2
YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVy
cm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCiBQ
QVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoIGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCmluZGV4IDBlYjY3YjM0
MWY4YmMzODkyMzI3MzczYTExZWY0ZWM2YjgwMjk0MTguLjc2YzQwMzJkZTZlMTBmZTJiMGMxYWIx
YmRiZGM5ZTVmNWJiMzU3OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEuaHRtbApAQCAtMTAsNDcgKzEwLDcwIEBACiA8c2NyaXB0PgogZGVzY3JpcHRp
b24oIlRlc3RzIHdlYmtpdEdldFVzZXJNZWRpYS4iKTsKIAordmFyIHN0cmVhbTsKKwogZnVuY3Rp
b24gZXJyb3IoKSB7Ci0gIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsK
LSAgZmluaXNoSlNUZXN0KCk7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgY2FsbGVk
LicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBnb3RTdHJlYW1JbkVycm9y
KHMpIHsKKyAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOworICAgIGZpbmlzaEpT
VGVzdCgpOwogfQogCi1mdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2sp
IHsKLSAgdHJ5IHsKLSAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGRpY3Rpb25hcnks
IGNhbGxiYWNrLCBlcnJvcik7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICB0ZXN0RmFpbGVkKCd3ZWJr
aXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7CitmdW5jdGlvbiBnb3RTdHJl
YW01KHMpIHsKKyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0
ZWQuJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOwor
ICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgfQorfQorCitmdW5jdGlvbiBlcnJvcjEoKSB7CisgICAgdGVzdFBhc3Nl
ZCgnRXJyb3IgY2FsbGJhY2sgY2FsbGVkLicpOworCisgICAgc2hvdWxkTm90VGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3Vw
cG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwg
dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsiKTsKK30KKworZnVuY3Rpb24gZ290U3Ry
ZWFtNChzKSB7CisgICAgc3RyZWFtID0gczsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJh
dGVkLicpOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsK
KyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisKKyAgICBz
aG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRh
dG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKIH0KIAogZnVuY3Rpb24gZ290U3Ry
ZWFtMyhzKSB7Ci0gIHN0cmVhbSA9IHM7Ci0gIHRlc3RQYXNzZWQoJ3thdWRpbzp0cnVlLCB2aWRl
bzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtJyk7Ci0gIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFj
a3MubGVuZ3RoJywgJzEnKTsKLSAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgn
LCAnMScpOwotICBmaW5pc2hKU1Rlc3QoKTsKKyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNz
ZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNr
cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
JywgJzEnKTsKKworICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW00LCBlcnJvcik7Iik7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewotICBzdHJl
YW0gPSBzOwotICB0ZXN0UGFzc2VkKCd7dmlkZW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbScpOwot
ICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcwJyk7Ci0gIHNob3VsZEJl
KCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzdHJlYW0gPSBzOworICAg
IHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoJywgJzEnKTsKIAotICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW0zKTsKKyAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9yKTsi
KTsKIH0KIAogZnVuY3Rpb24gZ290U3RyZWFtMShzKSB7Ci0gIHN0cmVhbSA9IHM7Ci0gIHRlc3RQ
YXNzZWQoJ3thdWRpbzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtJyk7Ci0gIHNob3VsZEJlKCdzdHJl
YW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGgnLCAnMCcpOworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBhc3NlZCgnU3Ry
ZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0
aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMCcp
OwogCi0gIGdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIpOworICAgIHNob3Vs
ZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSwgZ290
U3RyZWFtMiwgZXJyb3IpOyIpCiB9CiAKLWdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0
cmVhbTEpOworc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlv
OmZhbHNlLCB2aWRlbzpmYWxzZX0sIGVycm9yLCBlcnJvcik7IikKK3Nob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290U3RyZWFtMSwgZXJy
b3IpOyIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="177882"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="177883"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165954</attachid>
            <date>2012-09-27 02:09:18 -0700</date>
            <delta_ts>2012-09-27 04:06:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97540-20120927110836.patch</filename>
            <type>text/plain</type>
            <size>41453</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MTA5ODE3ZmJhYzZi
NGU1ODQ5NmZhZjAyYTFiOWNjMWQ4ODAyNGRkLi44MGIxNzg0MmQ3Yjk3OGQzYTAyMzdjZjBkOGMz
ZTlmOTJhYWM5OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOS0yNSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBnZXRVc2VyTWVkaWEgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oOgorICAgICAgICAoV2ViTWVkaWFDb25z
dHJhaW50cyk6CisKIDIwMTItMDktMjYgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbRm9ybXNdIEFkZGluZyBsb2NhbGl6YXRpb24gdGV4dHMgZm9yIG11
bHRpcGxlIGZpZWxkcyBkYXRlL3RpbWUgaW5wdXQgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTYwNmE4NWU2
YTUzZjc0NWY3MTQyZWI2NDdmODIwZDYyYmZlNjRlLi5lMjU3MTk4YjJkOWVhZjYxM2MwZWIyMjY4
ZTFjY2I3YWZiZTFjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDktMjUg
IFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
dHJlYW0gQVBJOiBVcGRhdGUgZ2V0VXNlck1lZGlhIHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3BlY2lm
aWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTc1NDAKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIGh0dHA6
Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci9nZXR1c2VybWVkaWEuaHRtbCNuYXZpZ2F0
b3J1c2VybWVkaWEKKyAgICAgICAgTmF2aWdhdG9yLmdldFVzZXJNZWRpYSBpcyBjaGFuZ2VkIHNv
IHRoYXQgdGhlIGF1ZGlvIGFuZCB2aWRlbyBtZW1iZXJzIGNhbiBlaXRoZXIKKyAgICAgICAgYmUg
YSBib29sIG9yIGEgY29uc3RyYWludHMgb2JqZWN0LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Rz
IGV4cGFuZGVkIHRvIGNvdmVyIHRoZSBuZXcgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaDoKKyAgICAgICAg
KE1lZGlhQ29uc3RyYWludHNJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlh
U3RyZWFtOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU9wdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlh
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlbyk6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvQ29uc3RyYWludHMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdCk6CisK
IDIwMTItMDktMjcgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbRm9ybXNdIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlIGNsYXNz
IHNob3VsZCBpbmhlcml0IERhdGVUaW1lRWRpdEVsZW1lbnQ6OkVkaXRDb250cm9sT3duZXIgcmF0
aGVyIHRoYW4gY29udGFpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzYmUxNTQ2
ZjE5MzFkMjM3NjlhMzRlY2RlNmRlNmJiNWJmYmYyYjFiLi5mNmI0YmIzMTA4ZDFlZjA0MTIyNDgw
YTk3ZTgxNTY4YTRhYTM0MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDEyLTA5LTI1ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29t
PgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIGdldFVzZXJNZWRpYSB0byBtYXRj
aCB0aGUgbGF0ZXN0IHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3NTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KKworICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3IvZ2V0dXNl
cm1lZGlhLmh0bWwjbmF2aWdhdG9ydXNlcm1lZGlhCisgICAgICAgIE5hdmlnYXRvci5nZXRVc2Vy
TWVkaWEgaXMgY2hhbmdlZCBzbyB0aGF0IHRoZSBhdWRpbyBhbmQgdmlkZW8gbWVtYmVycyBjYW4g
ZWl0aGVyCisgICAgICAgIGJlIGEgYm9vbCBvciBhIGNvbnN0cmFpbnRzIG9iamVjdC4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRp
YVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjphdWRp
b0NvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJNZWRpYVJlcXVlc3Q6OnZpZGVvQ29uc3RyYWludHMpOgorCiAyMDEyLTA5LTI3ICBLZWlzaGkg
SGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN1Z2dlc3Rpb25QaWNrZXIg
c2hvdWxkIHN1cHBvcnQgcnRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IGM3NzQyNDg4MDk2ODA1OTZmNGM4NGVh
NGU1MGU1NjgwYmJjZGU5YmEuLjUwYzUwY2FhYzdjNmFiMjcxOWYyZmQ2OTZhNjZmM2JkZGI1YmUz
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFD
b25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFDb25zdHJhaW50cy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmKTsKIAogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KIAogICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50TmFtZXMoV2ViVmVjdG9yPFdl
YlN0cmluZz4mIG5hbWVzKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0T3B0aW9u
YWxDb25zdHJhaW50TmFtZXMoV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzKSBjb25zdDsKQEAg
LTY4LDYgKzY4LDcgQEAgcHVibGljOgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAg
V2ViTWVkaWFDb25zdHJhaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50cz4mKTsKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRzKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHMqKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAppbmRl
eCAxMzM2ZjgyOGEwYjdiNDY4NzE3Y2RiNDkxYzgwZmE5NjQ0Y2QyZWU5Li5iOWUzMDE0MWVmNDQx
M2I2ZjlhY2QwNzhiZTljNmJjMGE2NGQ2MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcApAQCAt
NTEsNiArNTEsMTEgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gTWVkaWFDb25z
dHJhaW50c0ltcGw6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JgogICAgIHJldHVybiBvYmplY3Qu
cmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNv
bnN0cmFpbnRzSW1wbDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
Q29uc3RyYWludHNJbXBsKCkpOworfQorCiBib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0
aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQogewogICAgIGlmIChjb25zdHJh
aW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCmluZGV4IDRhNzMxYzkw
NDkxYzBhMmNkNmZiNmRlMTE5Y2Q2ZTk1ZjFkOTJlYmYuLmNkYzc2YjljZmM1N2I3MzI1NTc0YzEy
YTlkYWFkZmZkZDU4NmY1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAg
Y2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGwgOiBwdWJsaWMg
TWVkaWFDb25zdHJhaW50cyB7CiBwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0u
Y3BwCmluZGV4IGY4NWQ4OTMwNjFhNmVjZDRhYTdhYjU3NWY0OTI2YzQwZTE5ZjBjN2UuLmMxNGJj
MTBlMWNmNjE3OGM3MWI0NTNjYzU3ODE2YjcxMjIwZjhjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0u
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmF2aWdhdG9yTWVkaWFTdHJlYW06OndlYmtpdEdl
dFVzZXJNZWRpYShOYXZpZ2F0b3IqIG5hdmlnYXRvciwgY29uc3QgRGljdGlvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IFVz
ZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCksIHVz
ZXJNZWRpYSwgb3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0
ZShuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCksIHVzZXJNZWRpYSwgb3B0aW9ucywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBlYyk7CiAgICAgaWYgKCFyZXF1ZXN0KSB7CiAg
ICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCmluZGV4IGU2ZmMyZTcxNTRhZDcyMTZhMTc2ZDJlMTI3MTAwNTdmNjMwOGNmOGYuLmI5NDk0
MDAyYTkyZjRjZTFjZmM5ZmMzYjNiY2YzMmFlMzY4Y2QzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAt
MzcsNyArMzcsOSBAQAogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvY2FsTWVkaWFT
dHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgpAQCAtNDUsMzEgKzQ3LDc0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFS
ZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlh
Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1Jl
ZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQorc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IHBhcnNlT3B0aW9ucyhj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBh
ZG9wdFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChjb250ZXh0LCBjb250cm9sbGVyLCBvcHRpb25z
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLSAgICBpZiAoIXJlcXVlc3QtPmF1
ZGlvKCkgJiYgIXJlcXVlc3QtPnZpZGVvKCkpCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiBjb25zdHJhaW50czsKKworICAgIERpY3Rpb25hcnkgY29uc3RyYWludHNEaWN0aW9uYXJ5
OworICAgIGJvb2wgb2sgPSBvcHRpb25zLmdldChtZWRpYVR5cGUsIGNvbnN0cmFpbnRzRGljdGlv
bmFyeSk7CisgICAgaWYgKG9rICYmICFjb25zdHJhaW50c0RpY3Rpb25hcnkuaXNVbmRlZmluZWRP
ck51bGwoKSkKKyAgICAgICAgY29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3Jl
YXRlKGNvbnN0cmFpbnRzRGljdGlvbmFyeSwgZWMpOworICAgIGVsc2UgeworICAgICAgICBib29s
IG1lZGlhUmVxdWVzdGVkID0gZmFsc2U7CisgICAgICAgIG9wdGlvbnMuZ2V0KG1lZGlhVHlwZSwg
bWVkaWFSZXF1ZXN0ZWQpOworICAgICAgICBpZiAobWVkaWFSZXF1ZXN0ZWQpCisgICAgICAgICAg
ICBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gY29uc3RyYWludHMucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFVzZXJN
ZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gYXVkaW8gPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQVND
SUlMaXRlcmFsKCJhdWRpbyIpLCBlYyk7CisgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50c0ltcGw+IHZpZGVvID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEFTQ0lJTGl0ZXJhbCgidmlk
ZW8iKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWF1
ZGlvICYmICF2aWRlbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFVzZXJNZWRpYVJlcXVlc3QoY29udGV4dCwgY29udHJvbGxlciwgYXVkaW8ucmVsZWFzZSgp
LCB2aWRlby5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQog
Ci1Vc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK1VzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciog
Y29udHJvbGxlciwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gYXVkaW8sIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IHZpZGVvLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgOiBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgICwgbV9hdWRpbyhmYWxzZSkKLSAgICAs
IG1fdmlkZW8oZmFsc2UpCisgICAgLCBtX2F1ZGlvKGF1ZGlvKQorICAgICwgbV92aWRlbyh2aWRl
bykKICAgICAsIG1fY29udHJvbGxlcihjb250cm9sbGVyKQogICAgICwgbV9zdWNjZXNzQ2FsbGJh
Y2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2sp
CiB7Ci0gICAgb3B0aW9ucy5nZXQoImF1ZGlvIiwgbV9hdWRpbyk7Ci0gICAgb3B0aW9ucy5nZXQo
InZpZGVvIiwgbV92aWRlbyk7CiB9CiAKIFVzZXJNZWRpYVJlcXVlc3Q6On5Vc2VyTWVkaWFSZXF1
ZXN0KCkKIHsKIH0KIAorYm9vbCBVc2VyTWVkaWFSZXF1ZXN0OjphdWRpbygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYXVkaW87Cit9CisKK2Jvb2wgVXNlck1lZGlhUmVxdWVzdDo6dmlkZW8oKSBj
b25zdAoreworICAgIHJldHVybiBtX3ZpZGVvOworfQorCitNZWRpYUNvbnN0cmFpbnRzKiBVc2Vy
TWVkaWFSZXF1ZXN0OjphdWRpb0NvbnN0cmFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
dWRpby5nZXQoKTsKK30KKworTWVkaWFDb25zdHJhaW50cyogVXNlck1lZGlhUmVxdWVzdDo6dmlk
ZW9Db25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlkZW8uZ2V0KCk7Cit9CisK
IERvY3VtZW50KiBVc2VyTWVkaWFSZXF1ZXN0Ojpvd25lckRvY3VtZW50KCkKIHsKICAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IGI1MzM0OGQyOTYzYzJi
YTEzMjY4YjIyMTk0OGIzNTlmODU0ZjEzNGEuLjY0ZDBiMTdlZDlhMDY4M2M3NGUxYWNiNzhiMjI5
ZTc5NjVjYTg5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjay5oIgpAQCAtNDYsMTIgKzQ3LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIERvY3VtZW50OworY2xhc3MgTWVkaWFD
b25zdHJhaW50czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOwogY2xhc3MgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOwogY2xhc3MgVXNlck1lZGlhQ29udHJvbGxlcjsKIAogY2xhc3MgVXNlck1l
ZGlhUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCwgcHVibGlj
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVz
ZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRy
PE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJv
bGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAK
ICAgICBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2sqIHN1Y2Nlc3NDYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrLmdldCgpOyB9CkBAIC02NCwxOSArNjcs
MjIgQEAgcHVibGljOgogICAgIHZvaWQgc3VjY2VlZChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4pOwogICAgIHZvaWQgZmFpbCgpOwogCisgICAgTWVkaWFDb25zdHJhaW50cyogYXVk
aW9Db25zdHJhaW50cygpIGNvbnN0OworICAgIE1lZGlhQ29uc3RyYWludHMqIHZpZGVvQ29uc3Ry
YWludHMoKSBjb25zdDsKKwogICAgIC8vIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Ci0g
ICAgdmlydHVhbCBib29sIGF1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpbzsgfQotICAgIHZp
cnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW87IH0KKyAgICB2aXJ0dWFs
IGJvb2wgYXVkaW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmlkZW8oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVRdWVyeShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9T
b3VyY2VzKTsKIAogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgdmlydHVh
bCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgY29uc3Qg
RGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+KTsK
KyAgICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFD
b250cm9sbGVyKiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gYXVkaW8sIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IHZpZGVvLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjaz4pOwogCi0gICAgYm9vbCBtX2F1ZGlvOwotICAgIGJvb2wgbV92aWRlbzsKKyAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fYXVkaW87CisgICAgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHNJbXBsPiBtX3ZpZGVvOwogCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogbV9j
b250cm9sbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcAppbmRleCAwNWZhM2Y2
NjZkMDE2MzFjYzkyYTkyN2Q1N2MwMzZhMTg4ZTU1OTBmLi45ZGVhNDI0MzIwMDc1YzhmN2YzYTdj
YTI4YjQxNjE1MTY1ZDM0Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAKQEAg
LTQ1LDYgKzQ1LDExIEBAIFdlYk1lZGlhQ29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMo
Y29uc3QgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiYgY29uCiB7CiB9CiAKK1dlYk1lZGlh
Q29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMoTWVkaWFDb25zdHJhaW50cyogY29uc3Ry
YWludHMpCisgICAgOiBtX3ByaXZhdGUoY29uc3RyYWludHMpCit7Cit9CisKIHZvaWQgV2ViTWVk
aWFDb25zdHJhaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIG90aGVyKQog
ewogICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKQEAgLTU1LDExICs2MCw2IEBAIHZv
aWQgV2ViTWVkaWFDb25zdHJhaW50czo6cmVzZXQoKQogICAgIG1fcHJpdmF0ZS5yZXNldCgpOwog
fQogCi1ib29sIFdlYk1lZGlhQ29uc3RyYWludHM6OmlzTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsKLX0KLQogdm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpn
ZXRNYW5kYXRvcnlDb25zdHJhaW50TmFtZXMoV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzKSBj
b25zdAogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDY2MGRmNWJjMWM0OGEw
Y2JkMjliMmJlMDAxNmJhNDMwMDNjOTUzMTQuLjNjODQ2OTY0ODY5MDIwZTQ2ZTZkYjhlYTEzYzRl
ZTU2ZjBjYmFmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgVXNlck1lZGlhUmVx
dWVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdl
Yk1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7CiBjbGFz
cyBXZWJNZWRpYVN0cmVhbVNvdXJjZTsKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTY1LDYgKzY2LDgg
QEAgcHVibGljOgogCiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1ZGlvKCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCBib29sIHZpZGVvKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJN
ZWRpYUNvbnN0cmFpbnRzIGF1ZGlvQ29uc3RyYWludHMoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQ
T1JUIFdlYk1lZGlhQ29uc3RyYWludHMgdmlkZW9Db25zdHJhaW50cygpIGNvbnN0OwogCiAgICAg
V0VCS0lUX0VYUE9SVCBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgV2ViRG9jdW1lbnQgb3duZXJEb2N1bWVudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApp
bmRleCAyNmYxN2MzNWI4ZWIxZjM3YjI3ZTUwYTRmOGFiZjA1MGM2NWNjMjhjLi5mZmVjYjBhZWQz
YzgxYzlhY2Y0NTIyODdlNzMyYWZiZDUzN2E4OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMzUsMTYgKzM1LDE4IEBA
CiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03
Myw2ICs3NSwxOCBAQCBib29sIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlLT52aWRlbygpOwogfQogCitXZWJNZWRpYUNvbnN0cmFpbnRzIFdl
YlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvQ29uc3RyYWludHMoKSBjb25zdAoreworICAgIEFTU0VS
VCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvQ29uc3RyYWludHMoKTsK
K30KKworV2ViTWVkaWFDb25zdHJhaW50cyBXZWJVc2VyTWVkaWFSZXF1ZXN0Ojp2aWRlb0NvbnN0
cmFpbnRzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT52aWRlb0NvbnN0cmFpbnRzKCk7Cit9CisKIFdlYlNlY3VyaXR5T3JpZ2luIFdlYlVz
ZXJNZWRpYVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlz
TnVsbCgpICYmIG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZWMzZTQ3NjY3OTNh
NDlhYzNmZTI3NGZhOGFhMzE5ZGE4ZTY3YTNiLi4yM2UyYzM0OGYxOWM2OTBjZjkzZmI2OWQ0NDJj
ZWRlOTdiODVhZWZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDktMjUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgZ2V0
VXNlck1lZGlhIHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2Vi
cnRjL2VkaXRvci9nZXR1c2VybWVkaWEuaHRtbCNuYXZpZ2F0b3J1c2VybWVkaWEKKyAgICAgICAg
TmF2aWdhdG9yLmdldFVzZXJNZWRpYSBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhlIGF1ZGlvIGFuZCB2
aWRlbyBtZW1iZXJzIGNhbiBlaXRoZXIKKyAgICAgICAgYmUgYSBib29sIG9yIGEgY29uc3RyYWlu
dHMgb2JqZWN0LgorCisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KiBzcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZWRpYVJlcXVlc3Q6OmF1ZGlvQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6dmlkZW9Db25zdHJhaW50cyk6CisKIDIw
MTItMDktMjYgIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBVcGRhdGUgbXkgZS1tYWlsIGFkZHJlc3MuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCA4MzJmZmM5OTEyYjBkYThlNmRjOTM5MDY2Y2Rk
OWY2MGMyZmFiYzdmLi4wYzAxMTUxNDBhNDZjMjNiZjRmODUyOGYzZTgxZTZhMmY5N2UyNDIxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTgsNiArOCw4IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuY3Bw
JywKKyAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vTW9ja0dyYW1tYXJDaGVjay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tHcmFtbWFyQ2hlY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1NwZWxsQ2hl
Y2suY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tD
b25zdHJhaW50cy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3Ry
YWludHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNGMwYTY1M2M5MDNmYTBjZWVjOTI0ZDQzYjJlZWNkODY4
ZGYzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrQ29uc3RyYWludHMuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgor
CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworbmFtZXNwYWNlIE1vY2tDb25zdHJhaW50cyB7CisKK3N0YXRpYyBib29s
IGlzU3VwcG9ydGVkKGNvbnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4g
Y29uc3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2
YWxpZF9hbmRfc3VwcG9ydGVkXzIiOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkKGNvbnN0IFdl
YlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29uc3RyYWlu
dCkgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFp
bnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8yIjsKK30KKworYm9vbCB2ZXJpZnkoY29uc3Qg
V2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgV2ViVmVjdG9yPFdlYlN0
cmluZz4gbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdldE1hbmRh
dG9yeUNvbnN0cmFpbnROYW1lcyhtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMpOworICAgIGlmICht
YW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU3VwcG9ydGVkKG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lc1tpXSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgV2ViU3RyaW5nIHZhbHVlOwor
ICAgICAgICAgICAgY29uc3RyYWludHMuZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKG1hbmRh
dG9yeUNvbnN0cmFpbnROYW1lc1tpXSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlICE9
ICIxIikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBvcHRpb25hbENvbnN0cmFpbnROYW1lczsKKyAgICBj
b25zdHJhaW50cy5nZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhvcHRpb25hbENvbnN0cmFpbnRO
YW1lcyk7CisgICAgaWYgKG9wdGlvbmFsQ29uc3RyYWludE5hbWVzLnNpemUoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludE5hbWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWQob3B0aW9uYWxDb25zdHJhaW50TmFtZXNb
aV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdlYlN0cmlu
ZyB2YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmdldE9wdGlvbmFsQ29uc3RyYWludFZh
bHVlKG9wdGlvbmFsQ29uc3RyYWludE5hbWVzW2ldLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgIT0gIjAiKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBNb2NrQ29uc3Ry
YWludHMKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tDb25zdHJhaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNmViYTU3
MjhhODBjOWM1NGEwMGRmMDg0YTdiYjMzMzRlN2NmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2NrQ29uc3RyYWludHNfaAorI2RlZmluZSBNb2NrQ29uc3RyYWludHNfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJNZWRpYUNvbnN0cmFpbnRzOworfQorCituYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzIHsKKwor
Ym9vbCB2ZXJpZnkoY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJik7CisKK30gLy8g
bmFtZXNwYWNlIE1vY2tDb25zdHJhaW50cworCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2VuZGlmIC8vIE1vY2tDb25zdHJhaW50c19oCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5jcHAKaW5kZXggYjJkNTBmZWIzYzIyMzEyYTk3MzQ0ZmRiOTNjNTRmN2EzNzZjNDdi
OC4uNDVlYjYwMDU5NGI1Y2QyM2RlZTU4MjE0MjdlNjNjYjQ5MmFhNTI5ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIk1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAorI2luY2x1ZGUgIk1vY2tDb25zdHJh
aW50cy5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaD4KQEAgLTQ1LDcgKzQ2LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3Vj
Y2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3Qg
V2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgcmVzdWx0KQorICAgIFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlc3VsdCkKICAgICAgICAgOiBN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAg
ICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC01
OCwxMyArNTksMTMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBXZWJLaXQ6Oldl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIFdlYktpdDo6V2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fcmVzdWx0OworICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBtX3Jl
c3VsdDsKIH07CiAKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNr
IDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewog
cHVibGljOgotICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQorICAgIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3RGYWlsZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9i
amVjdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCkKICAg
ICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVj
dCkKICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICB7CkBAIC03NiwxMiArNzcsMTIg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3QgbV9yZXF1ZXN0OwogfTsKIAogY2xhc3MgUlRDVm9pZFJlcXVlc3RUYXNrIDogcHVi
bGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGlj
OgotICAgIFJUQ1ZvaWRSZXF1ZXN0VGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBvYmplY3QsIGNvbnN0IFdlYktpdDo6V2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wg
c3VjY2VlZGVkKQorICAgIFJUQ1ZvaWRSZXF1ZXN0VGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IHN1Y2NlZWRlZCkKICAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI+KG9iamVjdCkKICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAg
LCBtX3N1Y2NlZWRlZChzdWNjZWVkZWQpCkBAIC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0OjpXZWJSVENWb2lkUmVxdWVzdCBtX3JlcXVlc3Q7Cisg
ICAgV2ViUlRDVm9pZFJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9
OwogCkBAIC0xMDgsNDUgKzEwOSw5IEBAIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lCiB7CiB9CiAK
LXN0YXRpYyBib29sIGlzU3VwcG9ydGVkQ29uc3RyYWludChjb25zdCBXZWJTdHJpbmcmIGNvbnN0
cmFpbnQpCi17Ci0gICAgcmV0dXJuIGNvbnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRf
MSIgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8yIjsKLX0KLQotc3RhdGlj
IGJvb2wgaXNWYWxpZENvbnN0cmFpbnQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQotewot
ICAgIHJldHVybiBpc1N1cHBvcnRlZENvbnN0cmFpbnQoY29uc3RyYWludCkgfHwgY29uc3RyYWlu
dCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1
dF91bnN1cHBvcnRlZF8yIjsKLX0KLQogYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjppbml0aWFsaXplKGNvbnN0IFdlYlJUQ0NvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKIHsKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBt
YW5kYXRvcnlDb25zdHJhaW50TmFtZXM7Ci0gICAgY29uc3RyYWludHMuZ2V0TWFuZGF0b3J5Q29u
c3RyYWludE5hbWVzKG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyk7Ci0gICAgaWYgKG1hbmRhdG9y
eUNvbnN0cmFpbnROYW1lcy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghaXNTdXBwb3J0ZWRDb25zdHJhaW50KG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lc1tpXSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgV2ViU3RyaW5nIHZhbHVl
OwotICAgICAgICAgICAgY29uc3RyYWludHMuZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKG1h
bmRhdG9yeUNvbnN0cmFpbnROYW1lc1tpXSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKHZhbHVl
ICE9ICIxIikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBvcHRpb25hbENvbnN0cmFpbnROYW1lczsKLSAg
ICBjb25zdHJhaW50cy5nZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhvcHRpb25hbENvbnN0cmFp
bnROYW1lcyk7Ci0gICAgaWYgKG9wdGlvbmFsQ29uc3RyYWludE5hbWVzLnNpemUoKSkgewotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3RyYWludE5hbWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRDb25zdHJhaW50KG9wdGlvbmFsQ29u
c3RyYWludE5hbWVzW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBXZWJTdHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBjb25zdHJhaW50cy5nZXRPcHRpb25h
bENvbnN0cmFpbnRWYWx1ZShvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSwgdmFsdWUpOwotICAg
ICAgICAgICAgaWYgKHZhbHVlICE9ICIwIikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gTW9ja0Nv
bnN0cmFpbnRzOjp2ZXJpZnkoY29uc3RyYWludHMpOwogfQogCiB2b2lkIE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZU9mZmVyKGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2Vy
TWVkaWFDbGllbnRNb2NrLmNwcAppbmRleCBhMzczYzNiMzA3ZDY1NjNhZjQ2YWM3MzI4N2JjNTU4
MzY4YmQ0ZDEwLi42MGFiM2QyMjNiMTk0MzIyZTkyNTAzZDQwYTZhMGI4NmY3YjhiMDY5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmNwcApAQCAtMzMsMTUgKzMzLDQxIEBACiAKICNpbmNsdWRlICJXZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmgiCiAKKyNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKICNpbmNsdWRl
ICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1T
b3VyY2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitjbGFz
cyBVc2VyTWVkaWFSZXF1ZXN0VGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNs
aWVudE1vY2s+IHsKK3B1YmxpYzoKKyAgICBVc2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVk
aWFDbGllbnRNb2NrKiBvYmplY3QsIGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciByZXN1bHQpCisgICAgICAgIDogTWV0aG9k
VGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPihvYmplY3QpCisgICAgICAgICwgbV9yZXF1ZXN0
KHJlcXVlc3QpCisgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAo
bV9yZXN1bHQuaXNOdWxsKCkpCisgICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdEZhaWxlZCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZCht
X3Jlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgbV9y
ZXF1ZXN0OworICAgIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciBtX3Jlc3VsdDsKK307CisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIGNsYXNzIE1vY2tFeHRyYURhdGEgOiBw
dWJsaWMgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpFeHRyYURhdGEgewogcHVibGljOgpAQCAt
NTksNyArODUsMTggQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1l
ZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHN0cmVhbVIKICAgICBXZWJVc2VyTWVkaWFS
ZXF1ZXN0IHJlcXVlc3QgPSBzdHJlYW1SZXF1ZXN0OwogCiAgICAgaWYgKHJlcXVlc3Qub3duZXJE
b2N1bWVudCgpLmlzTnVsbCgpIHx8ICFyZXF1ZXN0Lm93bmVyRG9jdW1lbnQoKS5mcmFtZSgpKSB7
Ci0gICAgICAgIHJlcXVlc3QucmVxdWVzdEZhaWxlZCgpOworICAgICAgICBwb3N0VGFzayhuZXcg
VXNlck1lZGlhUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYk1lZGlhQ29uc3RyYWlu
dHMgY29uc3RyYWludHMgPSByZXF1ZXN0LmF1ZGlvQ29uc3RyYWludHMoKTsKKyAgICBpZiAoIWNv
bnN0cmFpbnRzLmlzTnVsbCgpICYmICFNb2NrQ29uc3RyYWludHM6OnZlcmlmeShjb25zdHJhaW50
cykpIHsKKyAgICAgICAgcG9zdFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJl
cXVlc3QsIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY29uc3RyYWludHMgPSByZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMoKTsKKyAgICBp
ZiAoIWNvbnN0cmFpbnRzLmlzTnVsbCgpICYmICFNb2NrQ29uc3RyYWludHM6OnZlcmlmeShjb25z
dHJhaW50cykpIHsKKyAgICAgICAgcG9zdFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRo
aXMsIHJlcXVlc3QsIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTc0LDE4ICsxMTEsMTYgQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnRN
b2NrOjpyZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHN0cmVhbVIK
ICAgICBpZiAocmVxdWVzdC52aWRlbygpKQogICAgICAgICB2aWRlb1NvdXJjZXNbMF0uaW5pdGlh
bGl6ZSgiTW9ja1ZpZGVvRGV2aWNlIzEiLCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVv
LCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKIAotICAgIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgZGVzY3JpcHRvci5pbml0aWFsaXplKCJmb29iYXIiLCBh
dWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CisgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
IHN0cmVhbTsKKyAgICBzdHJlYW0uaW5pdGlhbGl6ZSgiZm9vYmFyIiwgYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOwogCi0gICAgZGVzY3JpcHRvci5zZXRFeHRyYURhdGEobmV3IE1vY2tFeHRy
YURhdGEoKSk7CisgICAgc3RyZWFtLnNldEV4dHJhRGF0YShuZXcgTW9ja0V4dHJhRGF0YSgpKTsK
IAotICAgIHJlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZChkZXNjcmlwdG9yKTsKKyAgICBwb3N0VGFz
ayhuZXcgVXNlck1lZGlhUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgc3RyZWFtKSk7CiB9CiAK
IHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25z
dCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmluZGV4IGUyNDE1OTg1
Y2I2Y2M5MTE5M2E2NGMyZTZkMzhjMGYzY2IzYWU4ZDYuLjllMWJlYmE0YTNiMGRjZDc5NDlhZDJh
ODZmYjg5ZjBhZmY2Yzk5NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKQEAgLTMzLDI4ICszMywzMCBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRlICJX
ZWJVc2VyTWVkaWFDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwu
aCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tbW9uLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmlu
Zy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9j
ayA6IHB1YmxpYyBXZWJVc2VyTWVkaWFDbGllbnQgeworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50
TW9jayA6IHB1YmxpYyBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CiAgICAg
fldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNv
bnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJN
ZWRpYShjb25zdCBXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6Oldl
YlZlY3RvcjxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlPiYsIGNvbnN0IFdlYktpdDo6V2Vi
VmVjdG9yPFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVc2VyTWVk
aWFSZXF1ZXN0Jik7CisKKyAgICAvLyBUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFRhc2tMaXN0
KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKIHByaXZhdGU6CiAgICAgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQotfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cisg
ICAgVGFza0xpc3QgbV90YXNrTGlzdDsKK307CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCA0YTM2MjdmOTBlOTNmNDJhNjY3NzE3Njc0Mjc3MzU0MGI4NDZkMmZlLi43NjMyYzI2M2QzNWI4
OWFjZWVmOWRlODk0MTcxZjY4YmRlMjRmZDc4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlcjsKIGNsYXNzIE1vY2tXZWJTcGVlY2hSZWNvZ25pemVyOwogY2xhc3Mg
U2tDYW52YXM7CiBjbGFzcyBUZXN0U2hlbGw7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNjYsNyArNjcsNiBA
QCBjbGFzcyBXZWJTaGFyZWRXb3JrZXJDbGllbnQ7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViVVJMOwotY2xh
c3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVS
TEVycm9yOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVzOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNlck1lZGlh
Q2xpZW50TW9jaygpOworICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVu
dE1vY2soKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiB0ZXN0
TWVkaWFTdHJlYW1DbGllbnQoKTsKICNlbmRpZgogCkBAIC00MzAsNyArNDMwLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBPd25QdHI8V2ViS2l0
OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudE1vY2s7CisgICAgT3du
UHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IG1fdXNlck1lZGlhQ2xpZW50TW9jazsKICAgICBP
d25QdHI8d2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudD4gbV90ZXN0TWVkaWFT
dHJlYW1DbGllbnQ7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ5ZDA2ZjFlZWQ0MDA0MWMwNDg5N2M2OTY0
NzlmYmJkNDQ3NDI5MGEuLmE5MjZkMzAxYjBhYWNiMzBiMWI2MjFhNzQwN2I5OTE0ZGRhOGJkYTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBnZXRV
c2VyTWVkaWEgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0MAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgRXhwYW5kaW5nIHRlc3RzIHRvIGNvdmVyIHRo
ZSBuZXcgZ2V0VXNlck1lZGlhIGJlaGF2aW91ci4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sOgorCiAyMDEyLTA5LTI3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEg
IDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFVuc2tp
cCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ldmFsLmh0bWwgYWdhaW4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKaW5k
ZXggOTQzN2Q5MGZjNGYwNTUyYzE1Zjg3OGIzNmU5OWU2OTUyNDAxNWI0Mi4uY2Y3YWUwZWMyZDFj
NDhlZjBlM2MwOGNjZmY0MjExMDMwZjlhYTZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dApAQCAtMywxMyArMywy
NyBAQCBUZXN0cyB3ZWJraXRHZXRVc2VyTWVkaWEuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyB7YXVkaW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbQorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzpmYWxzZSwgdmlkZW86ZmFsc2V9LCBlcnJvciwgZXJy
b3IpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0
aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBn
b3RTdHJlYW0xLCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0g
Z2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKIFBBU1Mgc3Ry
ZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAwCi1QQVNTIHt2aWRlbzp0cnVlfSBnZW5lcmF0ZWQg
c3RyZWFtCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe3ZpZGVvOnRydWV9LCBn
b3RTdHJlYW0yLCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0g
Z2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDAKIFBBU1Mgc3Ry
ZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHthdWRpbzp0cnVlLCB2aWRlbzp0cnVl
fSBnZW5lcmF0ZWQgc3RyZWFtCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uYXVkaW9UcmFj
a3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlv
bmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTQsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5hdWRpb1RyYWNr
cy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1
dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
SW5FcnJvciwgZXJyb3IxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIEVycm9yIGNh
bGxiYWNrIGNhbGxlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlk
X2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3Ip
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mg
c3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5s
ZW5ndGggaXMgMQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKaW5kZXggMGViNjdiMzQxZjhi
YzM4OTIzMjczNzNhMTFlZjRlYzZiODAyOTQxOC4uNzZjNDAzMmRlNmUxMGZlMmIwYzFhYjFiZGJk
YzllNWY1YmIzNTc5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS5odG1sCkBAIC0xMCw0NyArMTAsNzAgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigi
VGVzdHMgd2Via2l0R2V0VXNlck1lZGlhLiIpOwogCit2YXIgc3RyZWFtOworCiBmdW5jdGlvbiBl
cnJvcigpIHsKLSAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBjYWxsZWQuJyk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbUluRXJyb3Iocykg
eworICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7CisgICAgZmluaXNoSlNUZXN0
KCk7CiB9CiAKLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewot
ICB0cnkgewotICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2Fs
bGJhY2ssIGVycm9yKTsKLSAgfSBjYXRjaCAoZSkgewotICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdl
dFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKK2Z1bmN0aW9uIGdvdFN0cmVhbTUo
cykgeworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4n
KTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAg
c2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOwogICAgIGZpbmlzaEpT
VGVzdCgpOwotICB9Cit9CisKK2Z1bmN0aW9uIGVycm9yMSgpIHsKKyAgICB0ZXN0UGFzc2VkKCdF
cnJvciBjYWxsYmFjayBjYWxsZWQuJyk7CisKKyAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2FuZF9zdXBwb3J0
ZWRfMSc6MX0sIG9wdGlvbmFsOlt7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfV19LCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtNSwgZXJyb3IpOyIpOworfQorCitmdW5jdGlvbiBnb3RTdHJlYW00
KHMpIHsKKyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQu
Jyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAg
IHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKworICAgIHNob3Vs
ZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5
OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyIpOwogfQogCiBmdW5jdGlvbiBnb3RTdHJlYW0z
KHMpIHsKLSAgc3RyZWFtID0gczsKLSAgdGVzdFBhc3NlZCgne2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9IGdlbmVyYXRlZCBzdHJlYW0nKTsKLSAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5s
ZW5ndGgnLCAnMScpOwotICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcx
Jyk7Ci0gIGZpbmlzaEpTVGVzdCgpOworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBhc3NlZCgn
U3RyZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAn
MScpOworCisgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnttYW5kYXRvcnk6e30sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTQsIGVycm9yKTsiKTsKIH0KIAogZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7Ci0gIHN0cmVhbSA9
IHM7Ci0gIHRlc3RQYXNzZWQoJ3t2aWRlbzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtJyk7Ci0gIHNo
b3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzAnKTsKLSAgc2hvdWxkQmUoJ3N0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHN0cmVhbSA9IHM7CisgICAgdGVz
dFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlv
VHJhY2tzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5s
ZW5ndGgnLCAnMScpOwogCi0gIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTMpOworICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMywgZXJyb3IpOyIpOwog
fQogCiBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpIHsKLSAgc3RyZWFtID0gczsKLSAgdGVzdFBhc3Nl
ZCgne2F1ZGlvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0nKTsKLSAgc2hvdWxkQmUoJ3N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOwotICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCcsICcwJyk7CisgICAgc3RyZWFtID0gczsKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0g
Z2VuZXJhdGVkLicpOworICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywg
JzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcwJyk7CiAK
LSAgZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSwgZ290U3RyZWFtMik7CisgICAgc2hvdWxkTm90
VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe3ZpZGVvOnRydWV9LCBnb3RTdHJl
YW0yLCBlcnJvcik7IikKIH0KIAotZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290U3RyZWFt
MSk7CitzaG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86ZmFs
c2UsIHZpZGVvOmZhbHNlfSwgZXJyb3IsIGVycm9yKTsiKQorc2hvdWxkTm90VGhyb3coIm5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0xLCBlcnJvcik7
Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>