<?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>163328</bug_id>
          
          <creation_ts>2016-10-12 05:29:28 -0700</creation_ts>
          <short_desc>[Modern Media Controls] Sliders: scrubber and volume</short_desc>
          <delta_ts>2016-10-13 00:02:34 -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>Media</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163356</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239248</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-12 05:29:28 -0700</bug_when>
    <thetext>Media controls need some sliders, specifically to change the video current time (scrubber) and the volume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239249</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-12 05:30:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/28733838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239251</commentid>
    <comment_count>2</comment_count>
      <attachid>291350</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-12 05:33:31 -0700</bug_when>
    <thetext>Created attachment 291350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239271</commentid>
    <comment_count>3</comment_count>
      <attachid>291350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-12 06:49:15 -0700</bug_when>
    <thetext>Comment on attachment 291350
Patch

Attachment 291350 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2270310

New failing tests:
media/modern-media-controls/volume-slider/volume-slider-value.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239272</commentid>
    <comment_count>4</comment_count>
      <attachid>291354</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-12 06:49:18 -0700</bug_when>
    <thetext>Created attachment 291354
Archive of layout-test-results from ews123 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews123  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239428</commentid>
    <comment_count>5</comment_count>
      <attachid>291350</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-12 12:32:07 -0700</bug_when>
    <thetext>Comment on attachment 291350
Patch

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

&gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:35
&gt; +        this._input = new LayoutNode(`&lt;input type=&quot;range&quot; min=&quot;0&quot; max=&quot;1&quot; step=&quot;${1 / 1000}&quot;&gt;`);

Why not just 0.001?

&gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:37
&gt; +        this._input.element.addEventListener(&quot;input&quot;, this);

I wonder if you&apos;re often doing someLayoutNode.element.addEventListenter(whatever, this) you should add a listenFor method to LayoutNode

listenFor(type, target) {
  this.element.addEventListener(type, target);
}

&gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:101
&gt; +        if (!this._valueIsChanging &amp;&amp; this.uiDelegate &amp;&amp; typeof this.uiDelegate.controlValueWillStartChanging === &quot;function&quot;)

isFunction() helper?

&gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:33
&gt; +        if (rgba.length == 4) {
&gt; +            [r, g, b] = rgba;

Wow. Didn&apos;t know that worked.

&gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:46
&gt; +    const expectedRGBA = rgba(expectedColor);
&gt; +    shouldBe(`rgba(${expr}).r`, `${expectedRGBA.r}`);
&gt; +    shouldBe(`rgba(${expr}).g`, `${expectedRGBA.g}`);
&gt; +    shouldBe(`rgba(${expr}).b`, `${expectedRGBA.b}`);
&gt; +    shouldBeCloseTo(`rgba(${expr}).a`, expectedRGBA.a, 0.001);

Add a local variable.

let rgbaValue = rgba(expr);

Also, this function is for testing, and won&apos;t need to be included in the running production code. I suggest a separate media-control-test-utils.js file.

&gt; LayoutTests/media/modern-media-controls/volume-slider/volume-slider-value.html:42
&gt; +function dragSlider(fromPx, toPx) {

Isn&apos;t there a drag event sender?

Or am I thinking of the iOS-only touch UIScripts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239451</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-12 13:18:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 291350 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291350&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:35
&gt; &gt; +        this._input = new LayoutNode(`&lt;input type=&quot;range&quot; min=&quot;0&quot; max=&quot;1&quot; step=&quot;${1 / 1000}&quot;&gt;`);
&gt; 
&gt; Why not just 0.001?

No good reason. I&apos;ll change it.

&gt; &gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:37
&gt; &gt; +        this._input.element.addEventListener(&quot;input&quot;, this);
&gt; 
&gt; I wonder if you&apos;re often doing
&gt; someLayoutNode.element.addEventListenter(whatever, this) you should add a
&gt; listenFor method to LayoutNode
&gt; 
&gt; listenFor(type, target) {
&gt;   this.element.addEventListener(type, target);
&gt; }

I thought about that, but discarded it since it was not essential to the LayoutNode feature of grouping DOM updates.

&gt; &gt; Source/WebCore/Modules/modern-media-controls/controls/slider.js:101
&gt; &gt; +        if (!this._valueIsChanging &amp;&amp; this.uiDelegate &amp;&amp; typeof this.uiDelegate.controlValueWillStartChanging === &quot;function&quot;)
&gt; 
&gt; isFunction() helper?

This is how we&apos;ve written those things in the Web Inspector code. It&apos;s verbose but it&apos;s straightforward.

&gt; &gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:33
&gt; &gt; +        if (rgba.length == 4) {
&gt; &gt; +            [r, g, b] = rgba;
&gt; 
&gt; Wow. Didn&apos;t know that worked.

Yup, ES6 restructuring is the bomb.

&gt; &gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:46
&gt; &gt; +    const expectedRGBA = rgba(expectedColor);
&gt; &gt; +    shouldBe(`rgba(${expr}).r`, `${expectedRGBA.r}`);
&gt; &gt; +    shouldBe(`rgba(${expr}).g`, `${expectedRGBA.g}`);
&gt; &gt; +    shouldBe(`rgba(${expr}).b`, `${expectedRGBA.b}`);
&gt; &gt; +    shouldBeCloseTo(`rgba(${expr}).a`, expectedRGBA.a, 0.001);
&gt; 
&gt; Add a local variable.
&gt; 
&gt; let rgbaValue = rgba(expr);

I don&apos;t think this can work, I think the `shouldBe()` family of functions only work when variables you refer to are in the global scope since eval() is used.

&gt; Also, this function is for testing, and won&apos;t need to be included in the
&gt; running production code. I suggest a separate media-control-test-utils.js
&gt; file.

This file is in the LayoutTests directory.

&gt; &gt; LayoutTests/media/modern-media-controls/volume-slider/volume-slider-value.html:42
&gt; &gt; +function dragSlider(fromPx, toPx) {
&gt; 
&gt; Isn&apos;t there a drag event sender?
&gt; 
&gt; Or am I thinking of the iOS-only touch UIScripts?

Not that I&apos;m aware. This was inspired by fast/form/range/range-slow-drag-to-edge.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239501</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-12 14:14:45 -0700</bug_when>
    <thetext>I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=163357 to skip the failing test on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239504</commentid>
    <comment_count>8</comment_count>
      <attachid>291395</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-12 14:18:33 -0700</bug_when>
    <thetext>Created attachment 291395
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239514</commentid>
    <comment_count>9</comment_count>
      <attachid>291395</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 14:52:39 -0700</bug_when>
    <thetext>Comment on attachment 291395
Patch for landing

Clearing flags on attachment: 291395

Committed r207245: &lt;http://trac.webkit.org/changeset/207245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239515</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 14:52:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239569</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-12 16:39:55 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; &gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:46
&gt; &gt; &gt; +    const expectedRGBA = rgba(expectedColor);
&gt; &gt; &gt; +    shouldBe(`rgba(${expr}).r`, `${expectedRGBA.r}`);
&gt; &gt; &gt; +    shouldBe(`rgba(${expr}).g`, `${expectedRGBA.g}`);
&gt; &gt; &gt; +    shouldBe(`rgba(${expr}).b`, `${expectedRGBA.b}`);
&gt; &gt; &gt; +    shouldBeCloseTo(`rgba(${expr}).a`, expectedRGBA.a, 0.001);
&gt; &gt; 
&gt; &gt; Add a local variable.
&gt; &gt; 
&gt; &gt; let rgbaValue = rgba(expr);
&gt; 
&gt; I don&apos;t think this can work, I think the `shouldBe()` family of functions
&gt; only work when variables you refer to are in the global scope since eval()
&gt; is used.

Except I think you show how to do it in the second parameter :)

shouldBe(`${rgbaValue.r}`, `${expectedRGBA.r}`)

Now you&apos;re passing a string that has a single value, but the eval should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239714</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-10-13 00:02:34 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; &gt; &gt; LayoutTests/media/modern-media-controls/resources/media-controls-utils.js:46
&gt; &gt; &gt; &gt; +    const expectedRGBA = rgba(expectedColor);
&gt; &gt; &gt; &gt; +    shouldBe(`rgba(${expr}).r`, `${expectedRGBA.r}`);
&gt; &gt; &gt; &gt; +    shouldBe(`rgba(${expr}).g`, `${expectedRGBA.g}`);
&gt; &gt; &gt; &gt; +    shouldBe(`rgba(${expr}).b`, `${expectedRGBA.b}`);
&gt; &gt; &gt; &gt; +    shouldBeCloseTo(`rgba(${expr}).a`, expectedRGBA.a, 0.001);
&gt; &gt; &gt; 
&gt; &gt; &gt; Add a local variable.
&gt; &gt; &gt; 
&gt; &gt; &gt; let rgbaValue = rgba(expr);
&gt; &gt; 
&gt; &gt; I don&apos;t think this can work, I think the `shouldBe()` family of functions
&gt; &gt; only work when variables you refer to are in the global scope since eval()
&gt; &gt; is used.
&gt; 
&gt; Except I think you show how to do it in the second parameter :)
&gt; 
&gt; shouldBe(`${rgbaValue.r}`, `${expectedRGBA.r}`)
&gt; 
&gt; Now you&apos;re passing a string that has a single value, but the eval should
&gt; work.

Right, except the point of those `shouldBe()` functions is that they show the eval&apos;d string in the test results, and in your example I would see the actual r value, not the expression that would generate it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291350</attachid>
            <date>2016-10-12 05:33:31 -0700</date>
            <delta_ts>2016-10-12 14:18:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163328-20161012143006.patch</filename>
            <type>text/plain</type>
            <size>39027</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEwODE0YjE3ZGE5ZWYz
NjQ5NmU2NjlhMTE0NGM5ODQ1ZjNjMDc3Yi4uYjAyNDY2ZmU5NDY1ZWZkYTY3YTY5NjQxM2JjNmEw
MGEyZTM0YzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTEyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW01vZGVybiBNZWRpYSBD
b250cm9sc10gU2xpZGVyczogc2NydWJiZXIgYW5kIHZvbHVtZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzI4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yODczMzgzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBhZGQgYSBuZXcgU2xpZGVyIGNsYXNzIHRoYXQgcHJvdmlkZXMgYSBjdXN0b20g
c2xpZGVyIGJhY2tlZCBieSBhbgorICAgICAgICBpbnZpc2libGUgPGlucHV0IHR5cGU9InJhbmdl
Ij4gZWxlbWVudCBhbmQgYSBmaWxsIHVuZGVybGF5IHRvIHByb3ZpZGUKKyAgICAgICAgYSBjdXN0
b20gY29sb3IgYmV0d2VlbiB0aGUgbGVmdCBlZGdlIG9mIHRoZSBzbGlkZXIgYW5kIHRoZSBzbGlk
ZXIgdGh1bWIuCisgICAgICAgIEFzIHRoZSBzbGlkZXIncyB2YWx1ZSBjaGFuZ2VzLCBhIFVJIGRl
bGVnYXRlIHJlY2VpdmVzIG1lc3NhZ2VzIHRvIHRyYWNrCisgICAgICAgIHN1Y2ggY2hhbmdlcy4K
KworICAgICAgICBUZXN0czogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyL3Nj
cnViYmVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9z
bGlkZXIvc2xpZGVyLWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21vZGVy
bi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWZpbGwuaHRtbAorICAgICAgICAgICAgICAg
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVzLmh0bWwKKyAg
ICAgICAgICAgICAgIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc2xpZGVyL3Zv
bHVtZS1zbGlkZXItdmFsdWUuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY3J1YmJlci5jc3M6IEFkZGVk
LgorICAgICAgICAoLnNjcnViYmVyLnNsaWRlciA+IGlucHV0Ojotd2Via2l0LXNsaWRlci10aHVt
Yik6CisgICAgICAgICogTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2Ny
dWJiZXIuanM6IEFkZGVkLgorICAgICAgICAoU2NydWJiZXIpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NsaWRlci5jc3M6IEFkZGVkLgorICAgICAg
ICAoLnNsaWRlcik6CisgICAgICAgICguc2xpZGVyID4gaW5wdXQsKToKKyAgICAgICAgKC5zbGlk
ZXIgPiAuZmlsbCk6CisgICAgICAgICguc2xpZGVyID4gaW5wdXQpOgorICAgICAgICAoLnNsaWRl
ciA+IGlucHV0Ojotd2Via2l0LXNsaWRlci10aHVtYik6CisgICAgICAgICogTW9kdWxlcy9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFNs
aWRlci5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFNsaWRlci5wcm90b3R5cGUuc2V0
IHZhbHVlKToKKyAgICAgICAgKFNsaWRlci5wcm90b3R5cGUuZ2V0IHdpZHRoKToKKyAgICAgICAg
KFNsaWRlci5wcm90b3R5cGUuc2V0IHdpZHRoKToKKyAgICAgICAgKFNsaWRlci5wcm90b3R5cGUu
aGFuZGxlRXZlbnQpOgorICAgICAgICAoU2xpZGVyLnByb3RvdHlwZS5jb21taXRQcm9wZXJ0eSk6
CisgICAgICAgIChTbGlkZXIucHJvdG90eXBlLl9oYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAg
KFNsaWRlci5wcm90b3R5cGUuX2hhbmRsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFNsaWRlci5w
cm90b3R5cGUuX3VwZGF0ZUZpbGwpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52b2x1
bWUuc2xpZGVyID4gaW5wdXQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iKToKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy92b2x1bWUtc2xpZGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFZvbHVtZVNsaWRlcik6CisKIDIwMTYtMTAtMTEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIGJpbmRpbmcgZ2VuZXJhdGVk
IGNhc3RlZC10aGlzIGNoZWNrcyBmb3IgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2NydWJiZXIuY3NzIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2Ny
dWJiZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhZTczNjYzZmYxNDY1Nzk1Y2EyMDE3NmIxZmVkMGU3OThk
MTdjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1t
ZWRpYS1jb250cm9scy9jb250cm9scy9zY3J1YmJlci5jc3MKQEAgLTAsMCArMSwzMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zY3J1YmJlci5zbGlk
ZXIgPiBpbnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeworICAgIHdpZHRoOiA0cHg7CisgICAg
aGVpZ2h0OiAyM3B4OworICAgIGJvcmRlci1yYWRpdXM6IDJweDsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnVi
YmVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29u
dHJvbHMvc2NydWJiZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMzZGQ1YTNiNTQwYTRmMGQ5MzRjZTIxN2Jl
YzQxMTJjODUzYjdhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnViYmVyLmpzCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitjbGFzcyBT
Y3J1YmJlciBleHRlbmRzIFNsaWRlcgoreworCisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoInNjcnViYmVyIik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuY3Nz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMv
c2xpZGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjE0ZmMyNjQ4OWRiNTYzMjYzYjQ5NjNhN2NiOWE1Y2Nk
YmVmOTcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmNzcwpAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnNsaWRlciB7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIGhlaWdodDogM3B4OworICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xODUpOworICAgIGJvcmRlci1yYWRpdXM6IDEuNXB4
OworfQorCisuc2xpZGVyID4gaW5wdXQsCisuc2xpZGVyID4gLmZpbGwgeworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDEwMCU7
Cit9CisKKy5zbGlkZXIgPiAuZmlsbCB7CisgICAgYm9yZGVyLXJhZGl1czogMS41cHggMCAwIDEu
NXB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNTUpOwor
ICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisuc2xpZGVyID4gaW5wdXQgeworICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50OworICAgIGJhY2tncm91bmQtY29sb3I6
IHRyYW5zcGFyZW50OworICAgIHdpZHRoOiAxMDAlOworICAgIGJvcmRlci1yYWRpdXM6IDEuNXB4
OworICAgIG1hcmdpbjogMDsKK30KKworLnNsaWRlciA+IGlucHV0Ojotd2Via2l0LXNsaWRlci10
aHVtYiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDE3OSwgMTc5LCAxNzkpOworICAgIGJveC1zaGFkb3c6IDBweCAw
cHggMHB4IDFweCByZ2IoNDAsIDQwLCA0MCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTE5YWVkMzcwMDM5NWQyNDEzMjQxNmU0NThkOTMxMzUwNjBiNGRjNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2NvbnRyb2xzL3NsaWRlci5qcwpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2NsYXNzIFNsaWRlciBleHRlbmRzIExh
eW91dE5vZGUKK3sKKworICAgIGNvbnN0cnVjdG9yKGNzc0NsYXNzTmFtZSA9ICIiKQorICAgIHsK
KyAgICAgICAgc3VwZXIoYDxkaXYgY2xhc3M9InNsaWRlciAke2Nzc0NsYXNzTmFtZX0iPmApOwor
CisgICAgICAgIHRoaXMuX2ZpbGwgPSBuZXcgTGF5b3V0Tm9kZShgPGRpdiBjbGFzcz0iZmlsbCI+
YCk7CisKKyAgICAgICAgdGhpcy5faW5wdXQgPSBuZXcgTGF5b3V0Tm9kZShgPGlucHV0IHR5cGU9
InJhbmdlIiBtaW49IjAiIG1heD0iMSIgc3RlcD0iJHsxIC8gMTAwMH0iPmApOworICAgICAgICB0
aGlzLl9pbnB1dC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMpOworICAg
ICAgICB0aGlzLl9pbnB1dC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcyk7
CisKKyAgICAgICAgdGhpcy52YWx1ZSA9IDA7CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFt0
aGlzLl9maWxsLCB0aGlzLl9pbnB1dF07CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBn
ZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB1bmRlZmluZWQp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7CisgICAgICAgIHJldHVybiBwYXJzZUZs
b2F0KHRoaXMuX2lucHV0LmVsZW1lbnQudmFsdWUpOworICAgIH0KKworICAgIHNldCB2YWx1ZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl92YWx1ZUlzQ2hhbmdpbmcpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgdGhp
cy5tYXJrRGlydHlQcm9wZXJ0eSgidmFsdWUiKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRmlsbCgp
OworICAgIH0KKworICAgIGdldCB3aWR0aCgpCisgICAgeworICAgICAgICByZXR1cm4gc3VwZXIu
d2lkdGg7CisgICAgfQorCisgICAgc2V0IHdpZHRoKHdpZHRoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIud2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhpcy5fdXBkYXRlRmlsbCgpOworICAgIH0KKwor
ICAgIC8vIFByb3RlY3RlZAorCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSAiaW5wdXQiOgorICAgICAgICAg
ICAgdGhpcy5faGFuZGxlSW5wdXRFdmVudCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgImNoYW5nZSI6CisgICAgICAgICAgICB0aGlzLl9oYW5kbGVDaGFuZ2VFdmVudCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb21taXRQcm9wZXJ0
eShwcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSAidmFs
dWUiKSB7CisgICAgICAgICAgICB0aGlzLl9pbnB1dC5lbGVtZW50LnZhbHVlID0gdGhpcy5fdmFs
dWU7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fdmFsdWU7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgc3VwZXIuY29tbWl0UHJvcGVydHkocHJvcGVydHlOYW1lKTsKKyAgICB9CisKKyAg
ICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlSW5wdXRFdmVudCgpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3ZhbHVlSXNDaGFuZ2luZyAmJiB0aGlzLnVpRGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMudWlEZWxlZ2F0ZS5jb250cm9sVmFsdWVXaWxsU3RhcnRDaGFuZ2luZyA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIHRoaXMudWlEZWxlZ2F0ZS5jb250cm9sVmFsdWVXaWxsU3RhcnRDaGFu
Z2luZyh0aGlzKTsKKyAgICAgICAgdGhpcy5fdmFsdWVJc0NoYW5naW5nID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKHRoaXMudWlEZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy51aURlbGVnYXRlLmNvbnRyb2xW
YWx1ZURpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRoaXMudWlEZWxlZ2F0
ZS5jb250cm9sVmFsdWVEaWRDaGFuZ2UodGhpcyk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlRmls
bCgpOworICAgIH0KKworICAgIF9oYW5kbGVDaGFuZ2VFdmVudCgpCisgICAgeworICAgICAgICBk
ZWxldGUgdGhpcy5fdmFsdWVJc0NoYW5naW5nOworICAgICAgICBpZiAodGhpcy51aURlbGVnYXRl
ICYmIHR5cGVvZiB0aGlzLnVpRGVsZWdhdGUuY29udHJvbFZhbHVlRGlkU3RvcENoYW5naW5nID09
PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhpcy51aURlbGVnYXRlLmNvbnRyb2xWYWx1ZURp
ZFN0b3BDaGFuZ2luZyh0aGlzKTsKKworICAgICAgICB0aGlzLl91cGRhdGVGaWxsKCk7CisgICAg
fQorCisgICAgX3VwZGF0ZUZpbGwoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsbC53aWR0aCA9
IE1hdGguY2VpbCh0aGlzLnZhbHVlICogdGhpcy53aWR0aCk7CisgICAgfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9s
cy92b2x1bWUtc2xpZGVyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYjkwNGJk
NmM3YjU3YmEyMjBlYzQ1M2NmNDNhNDVmMWE1OTUzODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy92b2x1bWUt
c2xpZGVyLmNzcwpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLnZvbHVtZS5zbGlkZXIgPiBpbnB1dDo6LXdlYmtpdC1zbGlkZXIt
dGh1bWIgeworICAgIHdpZHRoOiAxMXB4OworICAgIGhlaWdodDogMTFweDsKKyAgICBib3JkZXIt
cmFkaXVzOiA1LjVweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy92b2x1bWUtc2xpZGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhMTgyNjQ0NmJmZGYyZjQ1YjM4MWE3ZmJiODY5MTUwYTZkYjhhMDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1j
b250cm9scy9jb250cm9scy92b2x1bWUtc2xpZGVyLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitjbGFzcyBWb2x1bWVTbGlk
ZXIgZXh0ZW5kcyBTbGlkZXIKK3sKKyAgICAKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAg
ICAgICBzdXBlcigidm9sdW1lIik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDY5Yjk2NTY4YTJiYWRh
NjQ0NDgxMjZhOTkyMzIwZjhmMmFhODI4Mi4uODgyMDk0NzAwODVlYTI2ZDRhZGQ3Y2IyYzViY2Y2
NzczODQ5YTdhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTEwLTEyICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW01vZGVybiBNZWRpYSBDb250cm9s
c10gU2xpZGVyczogc2NydWJiZXIgYW5kIHZvbHVtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
ODczMzgzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0aW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBuZXcgU2xpZGVyIGNsYXNzIGFuZCBpdHMg
c3ViY2xhc3Nlcy4KKworICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9yZXNv
dXJjZXMvbWVkaWEtY29udHJvbHMtdXRpbHMuanM6IEFkZGVkLgorICAgICAgICAocmdiYSk6Cisg
ICAgICAgIChzaG91bGRCZUVxdWFsVG9SR0JBQ29sb3IpOgorICAgICAgICAqIG1lZGlhL21vZGVy
bi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVy
L3NsaWRlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWNvbnN0cnVjdG9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVy
LWZpbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvc2xpZGVyL3NsaWRlci1maWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLXN0eWxlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xp
ZGVyLXN0eWxlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tb2Rlcm4tbWVkaWEtY29u
dHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1l
LXNsaWRlci12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21vZGVy
bi1tZWRpYS1jb250cm9scy92b2x1bWUtc2xpZGVyL3ZvbHVtZS1zbGlkZXItdmFsdWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlk
ZXIvdm9sdW1lLXNsaWRlci5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0xMSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gTWFyayB1cmwgdGVz
dHMgdG8gZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL3Jlc291cmNlcy9tZWRpYS1jb250cm9scy11dGlscy5qcyBiL0xheW91dFRlc3Rz
L21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9yZXNvdXJjZXMvbWVkaWEtY29udHJvbHMtdXRp
bHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTY2NGZiNzQ3MmFmNmZlODMzNjUyZDQ2OTFiNmVjZDFhZWFlOTI5
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250
cm9scy9yZXNvdXJjZXMvbWVkaWEtY29udHJvbHMtdXRpbHMuanMKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIHJn
YmEoY29sb3JTdHJpbmcpCit7CisgICAgbGV0IFtyLCBnLCBiLCBhXSA9IFswLCAwLCAwLCAwXTsK
KyAgICBjb25zdCBtYXRjaCA9IGNvbG9yU3RyaW5nLm1hdGNoKC9eKD86cmdiYVwoKFteKV0rKVwp
KSQvaSk7CisgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7CisgICAgICAgIGNvbnN0IHJnYmEg
PSBtYXRjaFsxXS5zcGxpdCgvXHMqLFxzKi8pLm1hcChwYXJzZUZsb2F0KTsKKyAgICAgICAgaWYg
KHJnYmEubGVuZ3RoID09IDQpIHsKKyAgICAgICAgICAgIFtyLCBnLCBiXSA9IHJnYmE7CisgICAg
ICAgICAgICBhID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocmdiYVszXSwgMSkpOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVFcXVhbFRvUkdCQUNvbG9yKGV4cHIsIGV4cGVjdGVkQ29sb3IpCit7CisgICAgY29uc3QgZXhw
ZWN0ZWRSR0JBID0gcmdiYShleHBlY3RlZENvbG9yKTsKKyAgICBzaG91bGRCZShgcmdiYSgke2V4
cHJ9KS5yYCwgYCR7ZXhwZWN0ZWRSR0JBLnJ9YCk7CisgICAgc2hvdWxkQmUoYHJnYmEoJHtleHBy
fSkuZ2AsIGAke2V4cGVjdGVkUkdCQS5nfWApOworICAgIHNob3VsZEJlKGByZ2JhKCR7ZXhwcn0p
LmJgLCBgJHtleHBlY3RlZFJHQkEuYn1gKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oYHJnYmEoJHtl
eHByfSkuYWAsIGV4cGVjdGVkUkdCQS5hLCAwLjAwMSk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyL3NjcnViYmVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1
YmJlci9zY3J1YmJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQyZWM1ODQ1YmQyZjgxNjdl
ZDM1MDg0YjExZGRhMWI4YTNkZmQ0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdGluZyB0aGUgU2NydWJiZXIgY2xhc3MuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNjcnViYmVyLmVsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzY3J1YmJlciIpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXIvc2NydWJiZXIuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE1NjczMjM1ZTgxNDAwOGRiNTQwYTRkNDhmZjI0MWI0YjU2MDU5YWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXIv
c2NydWJiZXIuaHRtbApAQCAtMCwwICsxLDE5IEBACis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL2NvbnRyb2xzL3NsaWRlci5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2NydWJiZXIuY3NzIiB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY2hl
ZHVsZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMv
Y29udHJvbHMvbGF5b3V0LW5vZGUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnViYmVyLmpzIiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisKK2Rlc2NyaXB0aW9uKCJUZXN0aW5nIHRoZSA8Y29kZT5TY3J1YmJlcjwvY29kZT4g
Y2xhc3MuIik7CisKK2NvbnN0IHNjcnViYmVyID0gbmV3IFNjcnViYmVyOworCitzaG91bGRCZVRy
dWUoJ3NjcnViYmVyLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY3J1YmJlciIpJyk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXIt
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZjhiYzViMWY1ZTRlYmY5MjI4
MWQ4MTFlMTY3M2Q1NDIyYTUzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdGluZyB0aGUgU2xpZGVyIGNvbnN0cnVjdG9yLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzbGlkZXIuZWxlbWVudC5sb2Nh
bE5hbWUgaXMgImRpdiIKK1BBU1Mgc2xpZGVyLmVsZW1lbnQuY2xhc3NOYW1lLnRyaW0oKSBpcyAi
c2xpZGVyIgorUEFTUyBzbGlkZXIuY2hpbGRyZW4ubGVuZ3RoIGlzIDIKK1BBU1Mgc2xpZGVyLmNo
aWxkcmVuWzBdLmVsZW1lbnQubG9jYWxOYW1lIGlzICJkaXYiCitQQVNTIHNsaWRlci5jaGlsZHJl
blswXS5lbGVtZW50LmNsYXNzTmFtZSBpcyAiZmlsbCIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzFd
LmVsZW1lbnQubG9jYWxOYW1lIGlzICJpbnB1dCIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzFdLmVs
ZW1lbnQudHlwZSBpcyAicmFuZ2UiCitQQVNTIHNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1p
biBpcyAiMCIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzFdLmVsZW1lbnQubWF4IGlzICIxIgorUEFT
UyBzbGlkZXIuY2hpbGRyZW5bMV0uZWxlbWVudC5zdGVwIGlzICIwLjAwMSIKK1BBU1Mgc2xpZGVy
V2l0aENTU0NsYXNzTmFtZS5lbGVtZW50LmNsYXNzTmFtZSBpcyAic2xpZGVyIGZvbyIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1j
b25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xz
L3NsaWRlci9zbGlkZXItY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYThiMTQxZWUxYzZi
ZjRhMDllZmNhNDdkMTA0MGU3MGMwMDIyYjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3Iu
aHRtbApAQCAtMCwwICsxLDI5IEBACis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRy
b2xzL3NsaWRlci5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2NvbnRyb2xzL3NjaGVkdWxlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9sYXlvdXQtbm9kZS5qcyIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuanMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlNsaWRlcjwv
Y29kZT4gY29uc3RydWN0b3IuIik7CisKK2NvbnN0IHNsaWRlciA9IG5ldyBTbGlkZXI7CisKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygic2xpZGVyLmVsZW1lbnQubG9jYWxOYW1lIiwgImRpdiIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIuZWxlbWVudC5jbGFzc05hbWUudHJpbSgpIiwg
InNsaWRlciIpOworc2hvdWxkQmUoInNsaWRlci5jaGlsZHJlbi5sZW5ndGgiLCAiMiIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIuY2hpbGRyZW5bMF0uZWxlbWVudC5sb2NhbE5hbWUi
LCAiZGl2Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblswXS5lbGVt
ZW50LmNsYXNzTmFtZSIsICJmaWxsIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5j
aGlsZHJlblsxXS5lbGVtZW50LmxvY2FsTmFtZSIsICJpbnB1dCIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzbGlkZXIuY2hpbGRyZW5bMV0uZWxlbWVudC50eXBlIiwgInJhbmdlIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1pbiIsICIwIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1heCIs
ICIxIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50
LnN0ZXAiLCAiMC4wMDEiKTsKKworY29uc3Qgc2xpZGVyV2l0aENTU0NsYXNzTmFtZSA9IG5ldyBT
bGlkZXIoImZvbyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXJXaXRoQ1NTQ2xhc3NO
YW1lLmVsZW1lbnQuY2xhc3NOYW1lIiwgInNsaWRlciBmb28iKTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2xpZGVyL3NsaWRlci1maWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21v
ZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWZpbGwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ2MGY0ZDZiOWZhNjhkYWE0NzUzYTA4ZGRhOTJjNTA1OTExNmIwOGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVy
L3NsaWRlci1maWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0aW5nIHRoZSBT
bGlkZXIgZmlsbCBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc2xpZGVyLmNoaWxkcmVuWzBdLmVsZW1lbnQuc3R5bGUud2lkdGggaXMgIjEwMHB4IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVy
LWZpbGwuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlk
ZXIvc2xpZGVyLWZpbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGYzZjc0OGY1MTk3MTI0ZmU3NDkxMDdh
MjVjNjRjNWU2NWUzMzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItZmlsbC5odG1sCkBAIC0wLDAgKzEsMjYg
QEAKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmNzcyIgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21lZGlhLWNvbnRyb2xzLXV0aWxzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjaGVkdWxlci5qcyIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9sYXlvdXQtbm9kZS5qcyIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlk
ZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2Rl
PlNsaWRlcjwvY29kZT4gZmlsbCBwcm9wZXJ0eS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCitjb25zdCBzbGlkZXIgPSBuZXcgU2xpZGVyOworc2xpZGVyLndpZHRoID0gMjAw
Oworc2xpZGVyLnZhbHVlID0gMC41OworCitzY2hlZHVsZXIuZnJhbWVEaWRGaXJlID0gZnVuY3Rp
b24oKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2xpZGVyLmNoaWxkcmVuWzBdLmVs
ZW1lbnQuc3R5bGUud2lkdGgiLCAiMTAwcHgiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGQyNTVjMTUyODI2ODI0MmJmOThjMTRjNGI4MzE4
YWY3NGZkM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM1IEBACitUZXN0aW5nIHRoZSBTbGlkZXIgY29tcHV0ZWQgc3R5bGUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRhaW5lclN0eWxlLnBvc2l0aW9uIGlzICJhYnNv
bHV0ZSIKK1BBU1MgY29udGFpbmVyU3R5bGUuaGVpZ2h0IGlzICIzcHgiCitQQVNTIHJnYmEoY29u
dGFpbmVyU3R5bGUuYmFja2dyb3VuZENvbG9yKS5yIGlzIDI1NQorUEFTUyByZ2JhKGNvbnRhaW5l
clN0eWxlLmJhY2tncm91bmRDb2xvcikuZyBpcyAyNTUKK1BBU1MgcmdiYShjb250YWluZXJTdHls
ZS5iYWNrZ3JvdW5kQ29sb3IpLmIgaXMgMjU1CitQQVNTIHJnYmEoY29udGFpbmVyU3R5bGUuYmFj
a2dyb3VuZENvbG9yKS5hIGlzIHdpdGhpbiAwLjAwMSBvZiAwLjE4NQorUEFTUyBjb250YWluZXJT
dHlsZS5ib3JkZXJSYWRpdXMgaXMgIjEuNXB4IgorUEFTUyBmaWxsU3R5bGUucG9zaXRpb24gaXMg
ImFic29sdXRlIgorUEFTUyBmaWxsU3R5bGUudG9wIGlzICIwcHgiCitQQVNTIGZpbGxTdHlsZS5s
ZWZ0IGlzICIwcHgiCitQQVNTIGZpbGxTdHlsZS5oZWlnaHQgaXMgIjNweCIKK1BBU1MgZmlsbFN0
eWxlLmJvcmRlclJhZGl1cyBpcyAiMS41cHggMHB4IDBweCAxLjVweCIKK1BBU1MgcmdiYShmaWxs
U3R5bGUuYmFja2dyb3VuZENvbG9yKS5yIGlzIDI1NQorUEFTUyByZ2JhKGZpbGxTdHlsZS5iYWNr
Z3JvdW5kQ29sb3IpLmcgaXMgMjU1CitQQVNTIHJnYmEoZmlsbFN0eWxlLmJhY2tncm91bmRDb2xv
cikuYiBpcyAyNTUKK1BBU1MgcmdiYShmaWxsU3R5bGUuYmFja2dyb3VuZENvbG9yKS5hIGlzIHdp
dGhpbiAwLjAwMSBvZiAwLjI1NQorUEFTUyBmaWxsU3R5bGUucG9pbnRlckV2ZW50cyBpcyAibm9u
ZSIKK1BBU1MgaW5wdXRTdHlsZS5wb3NpdGlvbiBpcyAiYWJzb2x1dGUiCitQQVNTIGlucHV0U3R5
bGUudG9wIGlzICIwcHgiCitQQVNTIGlucHV0U3R5bGUubGVmdCBpcyAiMHB4IgorUEFTUyBpbnB1
dFN0eWxlLmhlaWdodCBpcyAiM3B4IgorUEFTUyBpbnB1dFN0eWxlLndlYmtpdEFwcGVhcmFuY2Ug
aXMgIm5vbmUiCitQQVNTIGlucHV0U3R5bGUuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorUEFTUyBpbnB1dFN0eWxlLndpZHRoIGlzICIyMDBweCIKK1BBU1MgaW5wdXRTdHls
ZS5ib3JkZXJSYWRpdXMgaXMgIjEuNXB4IgorUEFTUyBpbnB1dFN0eWxlLm1hcmdpbiBpcyAiMHB4
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIv
c2xpZGVyLXN0eWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL3NsaWRlci9zbGlkZXItc3R5bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2ZDU0ZWJjOGJiODBh
NmUxOTYzMmI3YzkxZDU0OTdjMzViNWJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLXN0eWxlcy5odG1sCkBA
IC0wLDAgKzEsNTMgQEAKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xp
ZGVyLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21lZGlhLWNvbnRyb2xzLXV0aWxzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjaGVkdWxlci5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9sYXlvdXQt
bm9kZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9j
b250cm9scy9zbGlkZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9k
eT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3Rp
bmcgdGhlIDxjb2RlPlNsaWRlcjwvY29kZT4gY29tcHV0ZWQgc3R5bGUuIik7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3Qgc2xpZGVyID0gbmV3IFNsaWRlcjsKK3NsaWRl
ci53aWR0aCA9IDIwMDsKKworbGV0IGNvbnRhaW5lclN0eWxlLCBmaWxsU3R5bGUsIGlucHV0U3R5
bGU7CitzY2hlZHVsZXIuZnJhbWVEaWRGaXJlID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoc2xpZGVyLmVsZW1lbnQpOworCisgICAgY29udGFpbmVyU3R5bGUg
PSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzbGlkZXIuZWxlbWVudCk7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb250YWluZXJTdHlsZS5wb3NpdGlvbiIsICJhYnNvbHV0ZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGFpbmVyU3R5bGUuaGVpZ2h0IiwgIjNweCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1JHQkFDb2xvcigiY29udGFpbmVyU3R5bGUuYmFja2dyb3VuZENv
bG9yIiwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xODUpIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb250YWluZXJTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41cHgiKTsKKworICAgIGZp
bGxTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHNsaWRlci5jaGlsZHJlblswXS5lbGVt
ZW50KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxTdHlsZS5wb3NpdGlvbiIsICJh
YnNvbHV0ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFN0eWxlLnRvcCIsICIw
cHgiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxTdHlsZS5sZWZ0IiwgIjBweCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFN0eWxlLmhlaWdodCIsICIzcHgiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41
cHggMHB4IDBweCAxLjVweCIpOworICAgIHNob3VsZEJlRXF1YWxUb1JHQkFDb2xvcigiZmlsbFN0
eWxlLmJhY2tncm91bmRDb2xvciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjU1KSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFN0eWxlLnBvaW50ZXJFdmVudHMiLCAibm9uZSIp
OworCisgICAgaW5wdXRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHNsaWRlci5jaGls
ZHJlblsxXS5lbGVtZW50KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0U3R5bGUu
cG9zaXRpb24iLCAiYWJzb2x1dGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0
U3R5bGUudG9wIiwgIjBweCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHls
ZS5sZWZ0IiwgIjBweCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS5o
ZWlnaHQiLCAiM3B4Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dFN0eWxlLndl
YmtpdEFwcGVhcmFuY2UiLCAibm9uZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5w
dXRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwKSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS53aWR0aCIsICIyMDBweCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41cHgiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0U3R5bGUubWFyZ2luIiwgIjBweCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIv
dm9sdW1lLXNsaWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVk
aWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZDRkZjhlZDM0ZGY2M2Y2MmI0NGIyMWNjNWM1YzkyNTA1MzdiMGM4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVt
ZS1zbGlkZXIvdm9sdW1lLXNsaWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVz
dGluZyB0aGUgVm9sdW1lU2xpZGVyIGNsYXNzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB2b2x1bWVTbGlkZXIuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInZvbHVt
ZSIpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLXZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc2xpZGVyL3ZvbHVtZS1z
bGlkZXItdmFsdWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZGUxZTg0MGRmNGUxOWIzMzc1
NmI1ZGQ1MjMyMzQ0OTZlMzJjZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLXZhbHVl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitUZXN0aW5nIHRoZSBWb2x1bWVTbGlkZXIg
dmFsdWUgcHJvcGVydHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNs
aWRlci52YWx1ZSBpcyAwCisKK05vdyB3ZSdsbCBkcmFnIHRvIHRoZSBzbGlkZXIgdGh1bWIgZnJv
bSAxMHB4IHRvIDMwcHggd2l0aGluIHRoZSBzbGlkZXIncyBib3VuZHMKK2NvbnRyb2xWYWx1ZVdp
bGxTdGFydENoYW5naW5nCitjb250cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4wMjkKK2Nv
bnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjAzNAorY29udHJvbFZhbHVlRGlkQ2hhbmdl
LCB2YWx1ZSA9IDAuMDQKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjA0NQorY29u
dHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDUKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwg
dmFsdWUgPSAwLjA1NgorY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDYxCitjb250
cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4wNjYKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwg
dmFsdWUgPSAwLjA3MQorY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDc3Citjb250
cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4wODIKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwg
dmFsdWUgPSAwLjA4NworY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDkzCitjb250
cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4wOTgKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwg
dmFsdWUgPSAwLjEwMworY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMTA4Citjb250
cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4xMTQKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwg
dmFsdWUgPSAwLjExOQorY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMTI0Citjb250
cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4xMworY29udHJvbFZhbHVlRGlkU3RvcENoYW5n
aW5nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVt
ZS1zbGlkZXIvdm9sdW1lLXNsaWRlci12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci12YWx1ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY1NjRmYzM5MTY1MjAzMjY4NDQ3MWMxZDc4ZGEyMmFkNjU3OTVkNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMv
dm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLXZhbHVlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuY3NzIiB0eXBlPSJ0
ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2Nv
bnRyb2xzL3ZvbHVtZS1zbGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVy
bi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY2hlZHVsZXIuanMiIHR5cGU9InRleHQvamF2YXNj
cmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvbGF5b3V0LW5vZGUuanMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xp
ZGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2Nv
bnRyb2xzL3ZvbHVtZS1zbGlkZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24o
IlRlc3RpbmcgdGhlIDxjb2RlPlZvbHVtZVNsaWRlcjwvY29kZT4gdmFsdWUgcHJvcGVydHkuIik7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3Qgc2xpZGVyID0gbmV3IFZv
bHVtZVNsaWRlcjsKK3NsaWRlci54ID0gMTA7CitzbGlkZXIueSA9IDMyOworc2xpZGVyLndpZHRo
ID0gMjAwOworCitzbGlkZXIudWlEZWxlZ2F0ZSA9IHsKKworICAgIGNvbnRyb2xWYWx1ZVdpbGxT
dGFydENoYW5naW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZyhgY29udHJvbFZh
bHVlV2lsbFN0YXJ0Q2hhbmdpbmdgKTsKKyAgICB9LAorCisgICAgY29udHJvbFZhbHVlRGlkQ2hh
bmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZyhgY29udHJvbFZhbHVlRGlkQ2hh
bmdlLCB2YWx1ZSA9ICR7c2xpZGVyLnZhbHVlfWApOworICAgIH0sCisKKyAgICBjb250cm9sVmFs
dWVEaWRTdG9wQ2hhbmdpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKGBjb250
cm9sVmFsdWVEaWRTdG9wQ2hhbmdpbmdgKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fQorCit9OworCitjb25zdCBpbnB1dCA9IHNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50OworCitm
dW5jdGlvbiBkcmFnU2xpZGVyKGZyb21QeCwgdG9QeCkgeworICAgIGNvbnN0IGJvdW5kcyA9IGlu
cHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIGNvbnN0IG1pblggPSBib3VuZHMubGVm
dDsKKyAgICBjb25zdCBjZW50ZXJZID0gYm91bmRzLnRvcCArIGJvdW5kcy5oZWlnaHQgLyAyOwor
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWluWCArIGZyb21QeCwgY2VudGVyWSk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisKKyAgICBjb25zdCBkZWx0YSA9IHRvUHggLSBm
cm9tUHg7CisgICAgY29uc3QgaXRlcmF0aW9ucyA9IE1hdGguYWJzKGRlbHRhKTsKKyAgICBmb3Ig
KGxldCBpID0gMTsgaSA8PSBpdGVyYXRpb25zOyArK2kpCisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKG1pblggKyBmcm9tUHggKyBpICogTWF0aC5zaWduKGRlbHRhKSwgY2VudGVyWSk7
CisKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK3NjaGVkdWxlci5mcmFtZURpZEZp
cmUgPSBmdW5jdGlvbigpCit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzbGlkZXIu
ZWxlbWVudCk7CisKKyAgICBzaG91bGRCZSgic2xpZGVyLnZhbHVlIiwgIjAiKTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIk5vdyB3ZSdsbCBkcmFnIHRvIHRoZSBzbGlkZXIgdGh1bWIgZnJv
bSAxMHB4IHRvIDMwcHggd2l0aGluIHRoZSBzbGlkZXIncyBib3VuZHMiKTsKKyAgICBkcmFnU2xp
ZGVyKDEwLCAzMCk7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1l
LXNsaWRlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3Zv
bHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMTEzODdhODAyZmI1
MTBjOWEzYWY2NWMyZGFjNDE0YTkxMzQ5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVy
Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250
cm9scy9zbGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuY3NzIiB0eXBlPSJ0
ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY2hlZHVs
ZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29u
dHJvbHMvbGF5b3V0LW5vZGUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVk
aWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuanMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlZvbHVtZVNsaWRlcjwv
Y29kZT4gY2xhc3MuIik7CisKK2NvbnN0IHZvbHVtZVNsaWRlciA9IG5ldyBWb2x1bWVTbGlkZXI7
CisKK3Nob3VsZEJlVHJ1ZSgndm9sdW1lU2xpZGVyLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KCJ2b2x1bWUiKScpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>291354</attachid>
            <date>2016-10-12 06:49:18 -0700</date>
            <delta_ts>2016-10-12 06:49:18 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews123 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291395</attachid>
            <date>2016-10-12 14:18:33 -0700</date>
            <delta_ts>2016-10-12 14:52:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163328-20161012231507.patch</filename>
            <type>text/plain</type>
            <size>39891</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEwODE0YjE3ZGE5ZWYz
NjQ5NmU2NjlhMTE0NGM5ODQ1ZjNjMDc3Yi4uM2RhNGY3NjAzMDY3NmQ5NjYwMzc1OTllNjQ5MDhj
ZWNmNThiMjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTEyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW01vZGVybiBNZWRpYSBD
b250cm9sc10gU2xpZGVyczogc2NydWJiZXIgYW5kIHZvbHVtZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzI4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yODczMzgzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAg
ICAgICAgV2UgYWRkIGEgbmV3IFNsaWRlciBjbGFzcyB0aGF0IHByb3ZpZGVzIGEgY3VzdG9tIHNs
aWRlciBiYWNrZWQgYnkgYW4KKyAgICAgICAgaW52aXNpYmxlIDxpbnB1dCB0eXBlPSJyYW5nZSI+
IGVsZW1lbnQgYW5kIGEgZmlsbCB1bmRlcmxheSB0byBwcm92aWRlCisgICAgICAgIGEgY3VzdG9t
IGNvbG9yIGJldHdlZW4gdGhlIGxlZnQgZWRnZSBvZiB0aGUgc2xpZGVyIGFuZCB0aGUgc2xpZGVy
IHRodW1iLgorICAgICAgICBBcyB0aGUgc2xpZGVyJ3MgdmFsdWUgY2hhbmdlcywgYSBVSSBkZWxl
Z2F0ZSByZWNlaXZlcyBtZXNzYWdlcyB0byB0cmFjaworICAgICAgICBzdWNoIGNoYW5nZXMuCisK
KyAgICAgICAgVGVzdHM6IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1
YmJlci5odG1sCisgICAgICAgICAgICAgICBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xp
ZGVyL3NsaWRlci1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBtZWRpYS9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1maWxsLmh0bWwKKyAgICAgICAgICAgICAgIG1l
ZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLXN0eWxlcy5odG1sCisgICAg
ICAgICAgICAgICBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1
bWUtc2xpZGVyLXZhbHVlLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21vZGVybi1tZWRpYS1j
b250cm9scy92b2x1bWUtc2xpZGVyL3ZvbHVtZS1zbGlkZXIuaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2NydWJiZXIuY3NzOiBBZGRlZC4K
KyAgICAgICAgKC5zY3J1YmJlci5zbGlkZXIgPiBpbnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1bWIp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnVi
YmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFNjcnViYmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuY3NzOiBBZGRlZC4KKyAgICAgICAg
KC5zbGlkZXIpOgorICAgICAgICAoLnNsaWRlciA+IGlucHV0LCk6CisgICAgICAgICguc2xpZGVy
ID4gLmZpbGwpOgorICAgICAgICAoLnNsaWRlciA+IGlucHV0KToKKyAgICAgICAgKC5zbGlkZXIg
PiBpbnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1bWIpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NsaWRlci5qczogQWRkZWQuCisgICAgICAgIChTbGlk
ZXIucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIChTbGlkZXIucHJvdG90eXBlLnNldCB2
YWx1ZSk6CisgICAgICAgIChTbGlkZXIucHJvdG90eXBlLmdldCB3aWR0aCk6CisgICAgICAgIChT
bGlkZXIucHJvdG90eXBlLnNldCB3aWR0aCk6CisgICAgICAgIChTbGlkZXIucHJvdG90eXBlLmhh
bmRsZUV2ZW50KToKKyAgICAgICAgKFNsaWRlci5wcm90b3R5cGUuY29tbWl0UHJvcGVydHkpOgor
ICAgICAgICAoU2xpZGVyLnByb3RvdHlwZS5faGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChT
bGlkZXIucHJvdG90eXBlLl9oYW5kbGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChTbGlkZXIucHJv
dG90eXBlLl91cGRhdGVGaWxsKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVybi1tZWRpYS1jb250
cm9scy9jb250cm9scy92b2x1bWUtc2xpZGVyLmNzczogQWRkZWQuCisgICAgICAgICgudm9sdW1l
LnNsaWRlciA+IGlucHV0Ojotd2Via2l0LXNsaWRlci10aHVtYik6CisgICAgICAgICogTW9kdWxl
cy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvdm9sdW1lLXNsaWRlci5qczogQWRkZWQu
CisgICAgICAgIChWb2x1bWVTbGlkZXIpOgorCiAyMDE2LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBiaW5kaW5nIGdlbmVyYXRlZCBj
YXN0ZWQtdGhpcyBjaGVja3MgZm9yIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnViYmVyLmNzcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjcnVi
YmVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YWU3MzY2M2ZmMTQ2NTc5NWNhMjAxNzZiMWZlZDBlNzk4ZDE3
Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVk
aWEtY29udHJvbHMvY29udHJvbHMvc2NydWJiZXIuY3NzCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuc2NydWJiZXIuc2xpZGVy
ID4gaW5wdXQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKKyAgICB3aWR0aDogNHB4OworICAgIGhl
aWdodDogMjNweDsKKyAgICBib3JkZXItcmFkaXVzOiAycHg7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY3J1YmJl
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRy
b2xzL3NjcnViYmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzM2RkNWEzYjU0MGE0ZjBkOTM0Y2UyMTdiZWM0
MTEyYzg1M2I3YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY3J1YmJlci5qcwpAQCAtMCwwICsxLDM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworY2xhc3MgU2Ny
dWJiZXIgZXh0ZW5kcyBTbGlkZXIKK3sKKworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCJzY3J1YmJlciIpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmNzcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3Ns
aWRlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YxNGZjMjY0ODlkYjU2MzI2M2I0OTYzYTdjYjlhNWNjZGJl
Zjk3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NsaWRlci5jc3MKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zbGlkZXIgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBoZWlnaHQ6IDNweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTg1KTsKKyAgICBib3JkZXItcmFkaXVzOiAxLjVweDsK
K30KKworLnNsaWRlciA+IGlucHV0LAorLnNsaWRlciA+IC5maWxsIHsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiAxMDAlOwor
fQorCisuc2xpZGVyID4gLmZpbGwgeworICAgIGJvcmRlci1yYWRpdXM6IDEuNXB4IDAgMCAxLjVw
eDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjU1KTsKKyAg
ICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLnNsaWRlciA+IGlucHV0IHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0
cmFuc3BhcmVudDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBib3JkZXItcmFkaXVzOiAxLjVweDsK
KyAgICBtYXJnaW46IDA7Cit9CisKKy5zbGlkZXIgPiBpbnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1
bWIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50OworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigxNzksIDE3OSwgMTc5KTsKKyAgICBib3gtc2hhZG93OiAwcHggMHB4
IDBweCAxcHggcmdiKDQwLCA0MCwgNDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEzOTc0OTE4ZWMyYTZkY2FlZjgzOTM5ZGE2MTUyYmQyYTkwNmJiZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250
cm9scy9jb250cm9scy9zbGlkZXIuanMKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitjbGFzcyBTbGlkZXIgZXh0ZW5kcyBMYXlv
dXROb2RlCit7CisKKyAgICBjb25zdHJ1Y3Rvcihjc3NDbGFzc05hbWUgPSAiIikKKyAgICB7Cisg
ICAgICAgIHN1cGVyKGA8ZGl2IGNsYXNzPSJzbGlkZXIgJHtjc3NDbGFzc05hbWV9Ij5gKTsKKwor
ICAgICAgICB0aGlzLl9maWxsID0gbmV3IExheW91dE5vZGUoYDxkaXYgY2xhc3M9ImZpbGwiPmAp
OworCisgICAgICAgIHRoaXMuX2lucHV0ID0gbmV3IExheW91dE5vZGUoYDxpbnB1dCB0eXBlPSJy
YW5nZSIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMDAxIj5gKTsKKyAgICAgICAgdGhpcy5faW5w
dXQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5faW5wdXQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMpOworCisgICAg
ICAgIHRoaXMudmFsdWUgPSAwOworCisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbdGhpcy5fZmls
bCwgdGhpcy5faW5wdXRdOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVl
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOworICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlz
Ll9pbnB1dC5lbGVtZW50LnZhbHVlKTsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fdmFsdWVJc0NoYW5naW5nKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMubWFya0Rp
cnR5UHJvcGVydHkoInZhbHVlIik7CisgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGwoKTsKKyAgICB9
CisKKyAgICBnZXQgd2lkdGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLndpZHRoOwor
ICAgIH0KKworICAgIHNldCB3aWR0aCh3aWR0aCkKKyAgICB7CisgICAgICAgIHN1cGVyLndpZHRo
ID0gd2lkdGg7CisgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGwoKTsKKyAgICB9CisKKyAgICAvLyBQ
cm90ZWN0ZWQKKworICAgIGhhbmRsZUV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChldmVudC50eXBlKSB7CisgICAgICAgIGNhc2UgImlucHV0IjoKKyAgICAgICAgICAgIHRoaXMu
X2hhbmRsZUlucHV0RXZlbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJj
aGFuZ2UiOgorICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY29tbWl0UHJvcGVydHkocHJvcGVy
dHlOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gInZhbHVlIikgewor
ICAgICAgICAgICAgdGhpcy5faW5wdXQuZWxlbWVudC52YWx1ZSA9IHRoaXMuX3ZhbHVlOworICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3ZhbHVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHN1cGVyLmNvbW1pdFByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2hhbmRsZUlucHV0RXZlbnQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll92YWx1ZUlzQ2hhbmdpbmcgJiYgdGhpcy51aURlbGVnYXRlICYmIHR5cGVvZiB0aGlzLnVpRGVs
ZWdhdGUuY29udHJvbFZhbHVlV2lsbFN0YXJ0Q2hhbmdpbmcgPT09ICJmdW5jdGlvbiIpCisgICAg
ICAgICAgICB0aGlzLnVpRGVsZWdhdGUuY29udHJvbFZhbHVlV2lsbFN0YXJ0Q2hhbmdpbmcodGhp
cyk7CisgICAgICAgIHRoaXMuX3ZhbHVlSXNDaGFuZ2luZyA9IHRydWU7CisgICAgICAgIGlmICh0
aGlzLnVpRGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMudWlEZWxlZ2F0ZS5jb250cm9sVmFsdWVEaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aGlzLnVpRGVsZWdhdGUuY29udHJv
bFZhbHVlRGlkQ2hhbmdlKHRoaXMpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGwoKTsKKyAg
ICB9CisKKyAgICBfaGFuZGxlQ2hhbmdlRXZlbnQoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3ZhbHVlSXNDaGFuZ2luZzsKKyAgICAgICAgaWYgKHRoaXMudWlEZWxlZ2F0ZSAmJiB0eXBl
b2YgdGhpcy51aURlbGVnYXRlLmNvbnRyb2xWYWx1ZURpZFN0b3BDaGFuZ2luZyA9PT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHRoaXMudWlEZWxlZ2F0ZS5jb250cm9sVmFsdWVEaWRTdG9wQ2hh
bmdpbmcodGhpcyk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRlRmlsbCgpOworICAgIH0KKworICAg
IF91cGRhdGVGaWxsKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2ZpbGwud2lkdGggPSBNYXRoLmNl
aWwodGhpcy52YWx1ZSAqIHRoaXMud2lkdGgpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvdm9sdW1l
LXNsaWRlci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9s
cy9jb250cm9scy92b2x1bWUtc2xpZGVyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmI5MDRiZDZjN2I1N2Jh
MjIwZWM0NTNjZjQzYTQ1ZjFhNTk1MzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvdm9sdW1lLXNsaWRlci5j
c3MKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy52b2x1bWUuc2xpZGVyID4gaW5wdXQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsK
KyAgICB3aWR0aDogMTFweDsKKyAgICBoZWlnaHQ6IDExcHg7CisgICAgYm9yZGVyLXJhZGl1czog
NS41cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRp
YS1jb250cm9scy9jb250cm9scy92b2x1bWUtc2xpZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvdm9sdW1lLXNsaWRlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YTE4MjY0NDZiZmRmMmY0NWIzODFhN2ZiYjg2OTE1MGE2ZGI4YTA3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMv
Y29udHJvbHMvdm9sdW1lLXNsaWRlci5qcwpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworY2xhc3MgVm9sdW1lU2xpZGVyIGV4dGVu
ZHMgU2xpZGVyCit7CisgICAgCisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoInZvbHVtZSIpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2OWI5NjU2OGEyYmFkYTY0NDQ4MTI2
YTk5MjMyMGY4ZjJhYTgyODIuLmFkZGUxNjJhMTFkMWQxZjFkMDc3NjA3MTQ5NzJkZmZkNmZiY2U5
M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNi0xMC0xMiAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFNsaWRl
cnM6IHNjcnViYmVyIGFuZCB2b2x1bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg3MzM4Mzg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFRlc3Rpbmcg
dGhlIHByb3BlcnRpZXMgb2YgdGhlIG5ldyBTbGlkZXIgY2xhc3MgYW5kIGl0cyBzdWJjbGFzc2Vz
LgorCisgICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3Jlc291cmNlcy9tZWRp
YS1jb250cm9scy11dGlscy5qczogQWRkZWQuCisgICAgICAgIChyZ2JhKToKKyAgICAgICAgKHNo
b3VsZEJlRXF1YWxUb1JHQkFDb2xvcik6CisgICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL3NjcnViYmVyL3NjcnViYmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyL3NjcnViYmVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItZmlsbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9z
bGlkZXIvc2xpZGVyLWZpbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1
bWUtc2xpZGVyL3ZvbHVtZS1zbGlkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLXZh
bHVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci12YWx1ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUt
c2xpZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAxNi0xMC0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gTWFyayB1cmwgdGVzdHMgdG8gZmFpbHVyZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3Jlc291
cmNlcy9tZWRpYS1jb250cm9scy11dGlscy5qcyBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy9yZXNvdXJjZXMvbWVkaWEtY29udHJvbHMtdXRpbHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTY2NGZiNzQ3MmFmNmZlODMzNjUyZDQ2OTFiNmVjZDFhZWFlOTI5MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9yZXNvdXJjZXMv
bWVkaWEtY29udHJvbHMtdXRpbHMuanMKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIHJnYmEoY29sb3JTdHJpbmcp
Cit7CisgICAgbGV0IFtyLCBnLCBiLCBhXSA9IFswLCAwLCAwLCAwXTsKKyAgICBjb25zdCBtYXRj
aCA9IGNvbG9yU3RyaW5nLm1hdGNoKC9eKD86cmdiYVwoKFteKV0rKVwpKSQvaSk7CisgICAgaWYg
KG1hdGNoICYmIG1hdGNoWzFdKSB7CisgICAgICAgIGNvbnN0IHJnYmEgPSBtYXRjaFsxXS5zcGxp
dCgvXHMqLFxzKi8pLm1hcChwYXJzZUZsb2F0KTsKKyAgICAgICAgaWYgKHJnYmEubGVuZ3RoID09
IDQpIHsKKyAgICAgICAgICAgIFtyLCBnLCBiXSA9IHJnYmE7CisgICAgICAgICAgICBhID0gTWF0
aC5tYXgoMCwgTWF0aC5taW4ocmdiYVszXSwgMSkpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiB7IHIsIGcsIGIsIGEgfTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVFcXVhbFRvUkdCQUNv
bG9yKGV4cHIsIGV4cGVjdGVkQ29sb3IpCit7CisgICAgY29uc3QgZXhwZWN0ZWRSR0JBID0gcmdi
YShleHBlY3RlZENvbG9yKTsKKyAgICBzaG91bGRCZShgcmdiYSgke2V4cHJ9KS5yYCwgYCR7ZXhw
ZWN0ZWRSR0JBLnJ9YCk7CisgICAgc2hvdWxkQmUoYHJnYmEoJHtleHByfSkuZ2AsIGAke2V4cGVj
dGVkUkdCQS5nfWApOworICAgIHNob3VsZEJlKGByZ2JhKCR7ZXhwcn0pLmJgLCBgJHtleHBlY3Rl
ZFJHQkEuYn1gKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oYHJnYmEoJHtleHByfSkuYWAsIGV4cGVj
dGVkUkdCQS5hLCAwLjAwMSk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NjcnViYmVyL3NjcnViYmVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQyZWM1ODQ1YmQyZjgxNjdlZDM1MDg0YjExZGRhMWI4
YTNkZmQ0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdGluZyB0aGUgU2NydWJiZXIgY2xhc3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHNjcnViYmVyLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY3J1YmJl
ciIpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2NydWJiZXIvc2NydWJiZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy9zY3J1YmJlci9zY3J1YmJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NjczMjM1ZTgx
NDAwOGRiNTQwYTRkNDhmZjI0MWI0YjU2MDU5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2NydWJiZXIvc2NydWJiZXIuaHRtbApA
QCAtMCwwICsxLDE5IEBACis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3Ns
aWRlci5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvY29udHJvbHMvc2NydWJiZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVk
aWE9InNjcmVlbiI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY2hlZHVsZXIuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvbGF5b3V0
LW5vZGUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMv
Y29udHJvbHMvc2xpZGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL2NvbnRyb2xzL3NjcnViYmVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwv
c2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0aW5nIHRoZSA8Y29kZT5TY3J1YmJlcjwvY29kZT4gY2xhc3MuIik7CisKK2Nv
bnN0IHNjcnViYmVyID0gbmV3IFNjcnViYmVyOworCitzaG91bGRCZVRydWUoJ3NjcnViYmVyLmVs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY3J1YmJlciIpJyk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZjhiYzViMWY1ZTRlYmY5MjI4MWQ4MTFlMTY3M2Q1NDIy
YTUzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvc2xpZGVyL3NsaWRlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMCBAQAorVGVzdGluZyB0aGUgU2xpZGVyIGNvbnN0cnVjdG9yLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzbGlkZXIuZWxlbWVudC5sb2NhbE5hbWUgaXMgImRpdiIK
K1BBU1Mgc2xpZGVyLmVsZW1lbnQuY2xhc3NOYW1lLnRyaW0oKSBpcyAic2xpZGVyIgorUEFTUyBz
bGlkZXIuY2hpbGRyZW4ubGVuZ3RoIGlzIDIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzBdLmVsZW1l
bnQubG9jYWxOYW1lIGlzICJkaXYiCitQQVNTIHNsaWRlci5jaGlsZHJlblswXS5lbGVtZW50LmNs
YXNzTmFtZSBpcyAiZmlsbCIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzFdLmVsZW1lbnQubG9jYWxO
YW1lIGlzICJpbnB1dCIKK1BBU1Mgc2xpZGVyLmNoaWxkcmVuWzFdLmVsZW1lbnQudHlwZSBpcyAi
cmFuZ2UiCitQQVNTIHNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1pbiBpcyAiMCIKK1BBU1Mg
c2xpZGVyLmNoaWxkcmVuWzFdLmVsZW1lbnQubWF4IGlzICIxIgorUEFTUyBzbGlkZXIuY2hpbGRy
ZW5bMV0uZWxlbWVudC5zdGVwIGlzICIwLjAwMSIKK1BBU1Mgc2xpZGVyV2l0aENTU0NsYXNzTmFt
ZS5lbGVtZW50LmNsYXNzTmFtZSBpcyAic2xpZGVyIGZvbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1jb25zdHJ1Y3Rvci5odG1s
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXIt
Y29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYThiMTQxZWUxYzZiZjRhMDllZmNhNDdkMTA0
MGU3MGMwMDIyYjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJu
LW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsx
LDI5IEBACis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NsaWRlci5jc3Mi
IHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xz
L3NjaGVkdWxlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250
cm9scy9jb250cm9scy9sYXlvdXQtbm9kZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuanMiIHR5cGU9InRleHQvamF2YXNj
cmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlNsaWRlcjwvY29kZT4gY29uc3RydWN0
b3IuIik7CisKK2NvbnN0IHNsaWRlciA9IG5ldyBTbGlkZXI7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygic2xpZGVyLmVsZW1lbnQubG9jYWxOYW1lIiwgImRpdiIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzbGlkZXIuZWxlbWVudC5jbGFzc05hbWUudHJpbSgpIiwgInNsaWRlciIpOworc2hv
dWxkQmUoInNsaWRlci5jaGlsZHJlbi5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzbGlkZXIuY2hpbGRyZW5bMF0uZWxlbWVudC5sb2NhbE5hbWUiLCAiZGl2Iik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblswXS5lbGVtZW50LmNsYXNzTmFtZSIs
ICJmaWxsIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVt
ZW50LmxvY2FsTmFtZSIsICJpbnB1dCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXIu
Y2hpbGRyZW5bMV0uZWxlbWVudC50eXBlIiwgInJhbmdlIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1pbiIsICIwIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50Lm1heCIsICIxIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50LnN0ZXAiLCAiMC4wMDEi
KTsKKworY29uc3Qgc2xpZGVyV2l0aENTU0NsYXNzTmFtZSA9IG5ldyBTbGlkZXIoImZvbyIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzbGlkZXJXaXRoQ1NTQ2xhc3NOYW1lLmVsZW1lbnQuY2xh
c3NOYW1lIiwgInNsaWRlciBmb28iKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRl
ci1maWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250
cm9scy9zbGlkZXIvc2xpZGVyLWZpbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MGY0ZDZi
OWZhNjhkYWE0NzUzYTA4ZGRhOTJjNTA1OTExNmIwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2xpZGVyL3NsaWRlci1maWxsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0aW5nIHRoZSBTbGlkZXIgZmlsbCBwcm9w
ZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2xpZGVyLmNoaWxk
cmVuWzBdLmVsZW1lbnQuc3R5bGUud2lkdGggaXMgIjEwMHB4IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWZpbGwuaHRtbCBiL0xh
eW91dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLWZpbGwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MGYzZjc0OGY1MTk3MTI0ZmU3NDkxMDdhMjVjNjRjNWU2NWUzMzgz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL3NsaWRlci9zbGlkZXItZmlsbC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21lZGlhLWNvbnRyb2xz
LXV0aWxzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xz
L2NvbnRyb2xzL3NjaGVkdWxlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1t
ZWRpYS1jb250cm9scy9jb250cm9scy9sYXlvdXQtbm9kZS5qcyIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuanMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlNsaWRlcjwvY29kZT4g
ZmlsbCBwcm9wZXJ0eS4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitjb25z
dCBzbGlkZXIgPSBuZXcgU2xpZGVyOworc2xpZGVyLndpZHRoID0gMjAwOworc2xpZGVyLnZhbHVl
ID0gMC41OworCitzY2hlZHVsZXIuZnJhbWVEaWRGaXJlID0gZnVuY3Rpb24oKQoreworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic2xpZGVyLmNoaWxkcmVuWzBdLmVsZW1lbnQuc3R5bGUud2lk
dGgiLCAiMTAwcHgiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2xpZGVyL3NsaWRlci1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlkZXItc3R5bGVzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMGQyNTVjMTUyODI2ODI0MmJmOThjMTRjNGI4MzE4YWY3NGZkM2Y4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3Ns
aWRlci9zbGlkZXItc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitUZXN0aW5n
IHRoZSBTbGlkZXIgY29tcHV0ZWQgc3R5bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGNvbnRhaW5lclN0eWxlLnBvc2l0aW9uIGlzICJhYnNvbHV0ZSIKK1BBU1MgY29u
dGFpbmVyU3R5bGUuaGVpZ2h0IGlzICIzcHgiCitQQVNTIHJnYmEoY29udGFpbmVyU3R5bGUuYmFj
a2dyb3VuZENvbG9yKS5yIGlzIDI1NQorUEFTUyByZ2JhKGNvbnRhaW5lclN0eWxlLmJhY2tncm91
bmRDb2xvcikuZyBpcyAyNTUKK1BBU1MgcmdiYShjb250YWluZXJTdHlsZS5iYWNrZ3JvdW5kQ29s
b3IpLmIgaXMgMjU1CitQQVNTIHJnYmEoY29udGFpbmVyU3R5bGUuYmFja2dyb3VuZENvbG9yKS5h
IGlzIHdpdGhpbiAwLjAwMSBvZiAwLjE4NQorUEFTUyBjb250YWluZXJTdHlsZS5ib3JkZXJSYWRp
dXMgaXMgIjEuNXB4IgorUEFTUyBmaWxsU3R5bGUucG9zaXRpb24gaXMgImFic29sdXRlIgorUEFT
UyBmaWxsU3R5bGUudG9wIGlzICIwcHgiCitQQVNTIGZpbGxTdHlsZS5sZWZ0IGlzICIwcHgiCitQ
QVNTIGZpbGxTdHlsZS5oZWlnaHQgaXMgIjNweCIKK1BBU1MgZmlsbFN0eWxlLmJvcmRlclJhZGl1
cyBpcyAiMS41cHggMHB4IDBweCAxLjVweCIKK1BBU1MgcmdiYShmaWxsU3R5bGUuYmFja2dyb3Vu
ZENvbG9yKS5yIGlzIDI1NQorUEFTUyByZ2JhKGZpbGxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IpLmcg
aXMgMjU1CitQQVNTIHJnYmEoZmlsbFN0eWxlLmJhY2tncm91bmRDb2xvcikuYiBpcyAyNTUKK1BB
U1MgcmdiYShmaWxsU3R5bGUuYmFja2dyb3VuZENvbG9yKS5hIGlzIHdpdGhpbiAwLjAwMSBvZiAw
LjI1NQorUEFTUyBmaWxsU3R5bGUucG9pbnRlckV2ZW50cyBpcyAibm9uZSIKK1BBU1MgaW5wdXRT
dHlsZS5wb3NpdGlvbiBpcyAiYWJzb2x1dGUiCitQQVNTIGlucHV0U3R5bGUudG9wIGlzICIwcHgi
CitQQVNTIGlucHV0U3R5bGUubGVmdCBpcyAiMHB4IgorUEFTUyBpbnB1dFN0eWxlLmhlaWdodCBp
cyAiM3B4IgorUEFTUyBpbnB1dFN0eWxlLndlYmtpdEFwcGVhcmFuY2UgaXMgIm5vbmUiCitQQVNT
IGlucHV0U3R5bGUuYmFja2dyb3VuZENvbG9yIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBp
bnB1dFN0eWxlLndpZHRoIGlzICIyMDBweCIKK1BBU1MgaW5wdXRTdHlsZS5ib3JkZXJSYWRpdXMg
aXMgIjEuNXB4IgorUEFTUyBpbnB1dFN0eWxlLm1hcmdpbiBpcyAiMHB4IgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLXN0eWxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3NsaWRlci9zbGlk
ZXItc3R5bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2ZDU0ZWJjOGJiODBhNmUxOTYzMmI3YzkxZDU0
OTdjMzViNWJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy9zbGlkZXIvc2xpZGVyLXN0eWxlcy5odG1sCkBAIC0wLDAgKzEsNTMgQEAK
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmNzcyIgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21l
ZGlhLWNvbnRyb2xzLXV0aWxzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3NjaGVkdWxlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9sYXlvdXQtbm9kZS5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIu
anMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlNs
aWRlcjwvY29kZT4gY29tcHV0ZWQgc3R5bGUuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworY29uc3Qgc2xpZGVyID0gbmV3IFNsaWRlcjsKK3NsaWRlci53aWR0aCA9IDIwMDsK
KworbGV0IGNvbnRhaW5lclN0eWxlLCBmaWxsU3R5bGUsIGlucHV0U3R5bGU7CitzY2hlZHVsZXIu
ZnJhbWVEaWRGaXJlID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoc2xpZGVyLmVsZW1lbnQpOworCisgICAgY29udGFpbmVyU3R5bGUgPSB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShzbGlkZXIuZWxlbWVudCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJj
b250YWluZXJTdHlsZS5wb3NpdGlvbiIsICJhYnNvbHV0ZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29udGFpbmVyU3R5bGUuaGVpZ2h0IiwgIjNweCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1JHQkFDb2xvcigiY29udGFpbmVyU3R5bGUuYmFja2dyb3VuZENvbG9yIiwgInJnYmEoMjU1
LCAyNTUsIDI1NSwgMC4xODUpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250YWlu
ZXJTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41cHgiKTsKKworICAgIGZpbGxTdHlsZSA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHNsaWRlci5jaGlsZHJlblswXS5lbGVtZW50KTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxTdHlsZS5wb3NpdGlvbiIsICJhYnNvbHV0ZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsbFN0eWxlLnRvcCIsICIwcHgiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImZpbGxTdHlsZS5sZWZ0IiwgIjBweCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZmlsbFN0eWxlLmhlaWdodCIsICIzcHgiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZpbGxTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41cHggMHB4IDBweCAxLjVw
eCIpOworICAgIHNob3VsZEJlRXF1YWxUb1JHQkFDb2xvcigiZmlsbFN0eWxlLmJhY2tncm91bmRD
b2xvciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjU1KSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZmlsbFN0eWxlLnBvaW50ZXJFdmVudHMiLCAibm9uZSIpOworCisgICAgaW5wdXRT
dHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0U3R5bGUucG9zaXRpb24iLCAiYWJz
b2x1dGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0U3R5bGUudG9wIiwgIjBw
eCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS5sZWZ0IiwgIjBweCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS5oZWlnaHQiLCAiM3B4Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dFN0eWxlLndlYmtpdEFwcGVhcmFuY2Ui
LCAibm9uZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXRTdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiaW5wdXRTdHlsZS53aWR0aCIsICIyMDBweCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiaW5wdXRTdHlsZS5ib3JkZXJSYWRpdXMiLCAiMS41cHgiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImlucHV0U3R5bGUubWFyZ2luIiwgIjBweCIpOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9s
dW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDRkZjhl
ZDM0ZGY2M2Y2MmI0NGIyMWNjNWM1YzkyNTA1MzdiMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1l
LXNsaWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdGluZyB0aGUgVm9sdW1l
U2xpZGVyIGNsYXNzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB2b2x1
bWVTbGlkZXIuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInZvbHVtZSIpIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRl
ci92b2x1bWUtc2xpZGVyLXZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21v
ZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc2xpZGVyL3ZvbHVtZS1zbGlkZXItdmFsdWUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZGUxZTg0MGRmNGUxOWIzMzc1NmI1ZGQ1MjMyMzQ0OTZl
MzJjZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLXZhbHVlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM0IEBACitUZXN0aW5nIHRoZSBWb2x1bWVTbGlkZXIgdmFsdWUgcHJvcGVydHku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNsaWRlci52YWx1ZSBpcyAw
CisKK05vdyB3ZSdsbCBkcmFnIHRvIHRoZSBzbGlkZXIgdGh1bWIgZnJvbSAxMHB4IHRvIDMwcHgg
d2l0aGluIHRoZSBzbGlkZXIncyBib3VuZHMKK2NvbnRyb2xWYWx1ZVdpbGxTdGFydENoYW5naW5n
Citjb250cm9sVmFsdWVEaWRDaGFuZ2UsIHZhbHVlID0gMC4wMjkKK2NvbnRyb2xWYWx1ZURpZENo
YW5nZSwgdmFsdWUgPSAwLjAzNAorY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDQK
K2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjA0NQorY29udHJvbFZhbHVlRGlkQ2hh
bmdlLCB2YWx1ZSA9IDAuMDUKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjA1Ngor
Y29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDYxCitjb250cm9sVmFsdWVEaWRDaGFu
Z2UsIHZhbHVlID0gMC4wNjYKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjA3MQor
Y29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDc3Citjb250cm9sVmFsdWVEaWRDaGFu
Z2UsIHZhbHVlID0gMC4wODIKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjA4Nwor
Y29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMDkzCitjb250cm9sVmFsdWVEaWRDaGFu
Z2UsIHZhbHVlID0gMC4wOTgKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjEwMwor
Y29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMTA4Citjb250cm9sVmFsdWVEaWRDaGFu
Z2UsIHZhbHVlID0gMC4xMTQKK2NvbnRyb2xWYWx1ZURpZENoYW5nZSwgdmFsdWUgPSAwLjExOQor
Y29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9IDAuMTI0Citjb250cm9sVmFsdWVEaWRDaGFu
Z2UsIHZhbHVlID0gMC4xMworY29udHJvbFZhbHVlRGlkU3RvcENoYW5naW5nCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1l
LXNsaWRlci12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci12YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1
NjRmYzM5MTY1MjAzMjY4NDQ3MWMxZDc4ZGEyMmFkNjU3OTVkNGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92
b2x1bWUtc2xpZGVyLXZhbHVlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1t
ZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9
InNjcmVlbiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1z
bGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9s
cy9jb250cm9scy9zY2hlZHVsZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvY29udHJvbHMvbGF5b3V0LW5vZGUuanMiIHR5cGU9InRleHQvamF2YXNj
cmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvc2xpZGVyLmpzIiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1z
bGlkZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIDxj
b2RlPlZvbHVtZVNsaWRlcjwvY29kZT4gdmFsdWUgcHJvcGVydHkuIik7CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3Qgc2xpZGVyID0gbmV3IFZvbHVtZVNsaWRlcjsKK3Ns
aWRlci54ID0gMTA7CitzbGlkZXIueSA9IDMyOworc2xpZGVyLndpZHRoID0gMjAwOworCitzbGlk
ZXIudWlEZWxlZ2F0ZSA9IHsKKworICAgIGNvbnRyb2xWYWx1ZVdpbGxTdGFydENoYW5naW5nOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZyhgY29udHJvbFZhbHVlV2lsbFN0YXJ0Q2hh
bmdpbmdgKTsKKyAgICB9LAorCisgICAgY29udHJvbFZhbHVlRGlkQ2hhbmdlOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBkZWJ1ZyhgY29udHJvbFZhbHVlRGlkQ2hhbmdlLCB2YWx1ZSA9ICR7
c2xpZGVyLnZhbHVlfWApOworICAgIH0sCisKKyAgICBjb250cm9sVmFsdWVEaWRTdG9wQ2hhbmdp
bmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKGBjb250cm9sVmFsdWVEaWRTdG9w
Q2hhbmdpbmdgKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCit9OworCitjb25z
dCBpbnB1dCA9IHNsaWRlci5jaGlsZHJlblsxXS5lbGVtZW50OworCitmdW5jdGlvbiBkcmFnU2xp
ZGVyKGZyb21QeCwgdG9QeCkgeworICAgIGNvbnN0IGJvdW5kcyA9IGlucHV0LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgIGNvbnN0IG1pblggPSBib3VuZHMubGVmdDsKKyAgICBjb25zdCBj
ZW50ZXJZID0gYm91bmRzLnRvcCArIGJvdW5kcy5oZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8obWluWCArIGZyb21QeCwgY2VudGVyWSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisKKyAgICBjb25zdCBkZWx0YSA9IHRvUHggLSBmcm9tUHg7CisgICAgY29u
c3QgaXRlcmF0aW9ucyA9IE1hdGguYWJzKGRlbHRhKTsKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8
PSBpdGVyYXRpb25zOyArK2kpCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pblgg
KyBmcm9tUHggKyBpICogTWF0aC5zaWduKGRlbHRhKSwgY2VudGVyWSk7CisKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Cit9CisKK3NjaGVkdWxlci5mcmFtZURpZEZpcmUgPSBmdW5jdGlvbigp
Cit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzbGlkZXIuZWxlbWVudCk7CisKKyAg
ICBzaG91bGRCZSgic2xpZGVyLnZhbHVlIiwgIjAiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIk5vdyB3ZSdsbCBkcmFnIHRvIHRoZSBzbGlkZXIgdGh1bWIgZnJvbSAxMHB4IHRvIDMwcHgg
d2l0aGluIHRoZSBzbGlkZXIncyBib3VuZHMiKTsKKyAgICBkcmFnU2xpZGVyKDEwLCAzMCk7Cit9
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9sdW1lLXNsaWRlci5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zbGlkZXIvdm9s
dW1lLXNsaWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMTEzODdhODAyZmI1MTBjOWEzYWY2NWMyZGFj
NDE0YTkxMzQ5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvdm9sdW1lLXNsaWRlci92b2x1bWUtc2xpZGVyLmh0bWwKQEAgLTAsMCAr
MSwxOSBAQAorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zbGlkZXIuY3Nz
IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9
InNjcmVlbiI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9jb250cm9scy9zY2hlZHVsZXIuanMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMvbGF5b3V0LW5v
ZGUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29u
dHJvbHMvc2xpZGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2NvbnRyb2xzL3ZvbHVtZS1zbGlkZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZGVz
Y3JpcHRpb24oIlRlc3RpbmcgdGhlIDxjb2RlPlZvbHVtZVNsaWRlcjwvY29kZT4gY2xhc3MuIik7
CisKK2NvbnN0IHZvbHVtZVNsaWRlciA9IG5ldyBWb2x1bWVTbGlkZXI7CisKK3Nob3VsZEJlVHJ1
ZSgndm9sdW1lU2xpZGVyLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ2b2x1bWUiKScpOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkNzI3ZDI4MDk0Y2Q1MmM4ZDY3YTBi
Njc3MTY4ZDA0YTA1YmEwZDNlLi5lYTU3MTg3YjdmMzg2NmFmMTAwYmNhMWI3OGY2ODBjM2FiMTE1
NzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yNjg2LDYgKzI2ODYsNyBAQCBmYXN0L3RleHQvbGV0dGVycHJlc3Mt
ZGlmZmVyZW50Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNjI3MzkgZmFzdC9pbWFnZXMv
Z2lmLWxvb3AtY291bnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8xNjMwMDkgbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2ljb24tYnV0dG9uL2ljb24t
YnV0dG9uLWFjdGl2ZS1zdGF0ZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTYzMzU3
IG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc2xpZGVyL3ZvbHVtZS1zbGlkZXIt
dmFsdWUuaHRtbCBbIFNraXAgXQogCiAjIFRoaXMgdmFyaWF0aW9uIGZvbnQgdGVzdCByZXF1aXJl
cyBTa2lhIHdoaWNoIGlzbid0IGF2YWlsYWJsZSBvbiBpT1MuCiB3ZWJraXQub3JnL2IvMTYzMDkz
IGZhc3QvdGV4dC92YXJpYXRpb25zL2FkdmFuY2VzLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>