<?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>195378</bug_id>
          
          <creation_ts>2019-03-06 14:14:43 -0800</creation_ts>
          <short_desc>Layer with no backing store should still hit-test over a scroller</short_desc>
          <delta_ts>2019-03-19 04:07:50 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=195902</see_also>
          <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>
          <dependson>195926</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1513187</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-06 14:14:43 -0800</bug_when>
    <thetext>Layers can have no backing store but still either have background-color, or even be totally empty, and they should still hit-test over a scroller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513188</commentid>
    <comment_count>1</comment_count>
      <attachid>363791</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-06 14:15:01 -0800</bug_when>
    <thetext>Created attachment 363791
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513189</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-06 14:15:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/48652078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517751</commentid>
    <comment_count>3</comment_count>
      <attachid>365026</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-03-18 10:26:55 -0700</bug_when>
    <thetext>Created attachment 365026
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517768</commentid>
    <comment_count>4</comment_count>
      <attachid>365028</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-03-18 10:39:26 -0700</bug_when>
    <thetext>Created attachment 365028
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517798</commentid>
    <comment_count>5</comment_count>
      <attachid>365028</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-18 11:13:53 -0700</bug_when>
    <thetext>Comment on attachment 365028
patch

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

r- to fix the pointer-events toggle issue (if it happens to work, please add a test). Don&apos;t forget you can use immediateScrollElementAtContentPointToOffset now).

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:768
&gt; +        updateEventRegion();

Here you&apos;re assuming that a layer configuration update will always happen when something changes that affects where renderers are relative to their enclosing compositing layer. This assumption relies on the fact that RenderLayerBacking::setContentsNeedDisplay() calls setNeedsCompositingConfigurationUpdate(), but if future optimizations allow us to update layer configuration in fewer cases, that might break.

In fact, this might break now with something like:

  &lt;div class=&quot;composited&quot;&gt;&lt;div id=&quot;child&quot;&gt;&lt;/div&gt;

and dynamic toggle of &quot;pointer-events&quot; style on child. That won&apos;t issue a repaint (hopefully) and won&apos;t update event regions.

You should also add a testcase that just moves elements around and tests event regions, so we can detect regressions caused by future compositing optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517841</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-03-18 12:15:06 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=195902 for pointe-events issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517853</commentid>
    <comment_count>7</comment_count>
      <attachid>365028</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 12:43:04 -0700</bug_when>
    <thetext>Comment on attachment 365028
patch

Clearing flags on attachment: 365028

Committed r243092: &lt;https://trac.webkit.org/changeset/243092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517854</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 12:43:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517868</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-03-18 13:13:06 -0700</bug_when>
    <thetext>This change broke the Windows build:

c:\cygwin\home\buildbot\worker\win10-release\build\source\webcore\rendering\renderlayerbacking.cpp(1437): error C2668: &apos;WebCore::GraphicsContext::GraphicsContext&apos;: ambiguous call to overloaded function (compiling source file C:\cygwin\home\buildbot\worker\win10-release\build\WebKitBuild\Release\DerivedSources\WebCore\unified-sources\UnifiedSource-043dd90b-8.cpp) [C:\cygwin\home\buildbot\worker\win10-release\build\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]
  c:\cygwin\home\buildbot\worker\win10-release\build\source\webcore\platform\graphics\graphicscontext.h(266): note: could be &apos;WebCore::GraphicsContext::GraphicsContext(PlatformGraphicsContext *)&apos; (compiling source file C:\cygwin\home\buildbot\worker\win10-release\build\WebKitBuild\Release\DerivedSources\WebCore\unified-sources\UnifiedSource-043dd90b-8.cpp)
  c:\cygwin\home\buildbot\worker\win10-release\build\source\webcore\platform\graphics\graphicscontext.h(522): note: or       &apos;WebCore::GraphicsContext::GraphicsContext(HDC,bool)&apos; (compiling source file C:\cygwin\home\buildbot\worker\win10-release\build\WebKitBuild\Release\DerivedSources\WebCore\unified-sources\UnifiedSource-043dd90b-8.cpp)
  c:\cygwin\home\buildbot\worker\win10-release\build\source\webcore\rendering\renderlayerbacking.cpp(1437): note: while trying to match the argument list &apos;(nullptr)&apos; (compiling source file C:\cygwin\home\buildbot\worker\win10-release\build\WebKitBuild\Release\DerivedSources\WebCore\unified-sources\UnifiedSource-043dd90b-8.cpp)

https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/2965</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517878</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-03-18 13:29:30 -0700</bug_when>
    <thetext>Windows build fix https://trac.webkit.org/changeset/243096/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518064</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 18:53:40 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 195926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518071</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-18 18:56:19 -0700</bug_when>
    <thetext>This cause assertions like:

 ASSERTION FAILED: clipRectsContext.rootLayer == m_clipRectsCache-&gt;m_clipRectsRoot[clipRectsType] 

0   com.apple.JavaScriptCore      	0x000000070f1be55e WTFCrash + 14 (Assertions.cpp:305)
1   com.apple.WebCore             	0x00000006f84d14eb WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x00000006fbba5629 WebCore::RenderLayer::updateClipRects(WebCore::RenderLayer::ClipRectsContext const&amp;) + 345 (RenderLayer.cpp:5349)
3   com.apple.WebCore             	0x00000006fbba6acf WebCore::RenderLayer::parentClipRects(WebCore::RenderLayer::ClipRectsContext const&amp;) const + 255
4   com.apple.WebCore             	0x00000006fbba6bbf WebCore::RenderLayer::backgroundClipRect(WebCore::RenderLayer::ClipRectsContext const&amp;) const::$_1::operator()() const + 223 (RenderLayer.cpp:5499)
5   com.apple.WebCore             	0x00000006fbb9a77e WebCore::RenderLayer::backgroundClipRect(WebCore::RenderLayer::ClipRectsContext const&amp;) const + 158 (RenderLayer.cpp:5507)
6   com.apple.WebCore             	0x00000006fbba10b0 WebCore::RenderLayer::calculateRects(WebCore::RenderLayer::ClipRectsContext const&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutRect&amp;, WebCore::ClipRect&amp;, WebCore::ClipRect&amp;, WebCore::LayoutSize const&amp;) const + 112 (RenderLayer.cpp:5519)
7   com.apple.WebCore             	0x00000006fbb9ec0f WebCore::RenderLayer::collectFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt;&amp;, WebCore::RenderLayer const*, WebCore::LayoutRect const&amp;, WebCore::RenderLayer::PaginationInclusionMode, WebCore::ClipRectsType, WebCore::OverlayScrollbarSizeRelevancy, WebCore::ShouldRespectOverflowClip, WebCore::LayoutSize const&amp;, WebCore::LayoutRect const*, WebCore::ShouldApplyRootOffsetToFragments) + 303 (RenderLayer.cpp:4516)
8   com.apple.WebCore             	0x00000006fbb9ba05 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;) + 2885 (RenderLayer.cpp:4339)

because the paint triggered by RenderLayerBacking::updateEventRegion() caches the wrong clip rect roots.

Also, why are we paying the cost for this event region computation on macOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518082</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-18 19:03:48 -0700</bug_when>
    <thetext>compositing/repaint/requires-backing-repaint.html is a test that hit this assertion, on macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518188</commentid>
    <comment_count>14</comment_count>
      <attachid>365138</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-03-19 01:46:16 -0700</bug_when>
    <thetext>Created attachment 365138
patch

Don&apos;t collect the region for layers that have paintsIntoCompositedAncestor() set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518208</commentid>
    <comment_count>15</comment_count>
      <attachid>365138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 04:07:48 -0700</bug_when>
    <thetext>Comment on attachment 365138
patch

Clearing flags on attachment: 365138

Committed r243134: &lt;https://trac.webkit.org/changeset/243134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518209</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 04:07:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>363791</attachid>
            <date>2019-03-06 14:15:01 -0800</date>
            <delta_ts>2019-03-18 10:27:24 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>empty-layer-bounds-overlap.html</filename>
            <type>text/html</type>
            <size>898</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
ICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyI+CiAgICA8c3R5bGU+CiAgICAgICAgLnNj
cm9sbGVyIHsKICAgICAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgICAgICAgICBib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsKICAgICAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgICAgICBoZWln
aHQ6IDQwMHB4OwogICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOwogICAgICAgIH0KICAgICAg
ICAKICAgICAgICAuY29udGVudHMgewogICAgICAgICAgICBoZWlnaHQ6IDIwMDBweDsKICAgICAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh3aGl0ZSwg
c2lsdmVyIDIwMHB4KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm92ZXJsYXBwZXIgewog
ICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMjAwcHg7CiAg
ICAgICAgICAgIGxlZnQ6IDIwMHB4OwogICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwg
MCwgMCwgMC4yNSk7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxk
aXYgY2xhc3M9InNjcm9sbGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+CiAgICAg
ICAgICAgIFNjcm9sbCBtZS4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFz
cz0ib3ZlcmxhcHBlciI+CiAgICA8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365026</attachid>
            <date>2019-03-18 10:26:55 -0700</date>
            <delta_ts>2019-03-18 10:39:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-update-composite.patch</filename>
            <type>text/plain</type>
            <size>36313</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTAzLTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBMYXllciB3aXRoIG5vIGJhY2tp
bmcgc3RvcmUgc2hvdWxkIHN0aWxsIGhpdC10ZXN0IG92ZXIgYSBzY3JvbGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Mzc4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODY1MjA3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9s
bC1vdmVybGFwLTMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLTQuaHRtbAorCisgICAgICAgIE1vdmUgY29sbGVjdGluZyBldmVu
dCByZWdpb24gZnJvbSBwYWludCB0byBjb21wb3NpdGluZyB1cGRhdGUgdGltZS4KKyAgICAgICAg
VGhpcyBzb2x2ZXMgYSBudW1iZXIgb2YgcHJvYmxlbXMgaW5jbHVkaW5nIHJlZ2lvbnMgZm9yIG5v
bi1wYWludGluZyBsYXllcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6CisKKyAgICAgICAgVXNlIHRoZSBl
eGlzdGluZyB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgaGVscGVyLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dExheWVyQ29udGVudHMpOgorCisgICAgICAgIFVzZSBmbGFnIGZvciBldmVudCByZWdpb24gY29s
bGVjdGluZywgZG9uJ3QgcGFpbnQgY29udGVudC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCk6CisKKyAgICAgICAgV2UgY2FuIGJhaWwgb3V0IGltbWVkaWF0ZWx5
IGlmIHRoZXJlIGlzIG5vIG92ZXJmbG93LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyk6CisK
KyAgICAgICAgTW92ZSB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZp
Z3VyYXRpb24pOgorCisgICAgICAgIFVwZGF0ZSBldmVudCByZWdpb24gb24gYmFja2luZyBjb25m
aWd1cmF0aW9uIHVwZGF0ZS4gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgYW55dGhpbmcgaW50ZXJlc3Rp
bmcgY2hhbmdlcyBvbiBhIHN1YmxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaDoKKwogMjAxOS0wMy0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046ICF2bS5pc0luaXRpYWxpemluZ09iamVjdCgp
IHZvaWQqIEpTQzo6dHJ5QWxsb2NhdGVDZWxsSGVscGVyPEpTQzo6U3RydWN0dXJlPiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Myw3ICs0NTMsNiBAQCBwdWJsaWM6CiAgICAgV2luZFJ1bGUgc2hhcGVMYXllcldpbmRSdWxlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFNoYXBlTGF5ZXJXaW5kUnVsZShXaW5kUnVsZSk7
CiAKLSAgICAvLyBOb24tbnVsbCBpZiB0aGUgZXZlbnQgc2Vuc2l0aXZlIHJlZ2lvbiBvZiB0aGUg
bGF5ZXIgZGlmZmVycyBmcm9tIHRoZSBsYXllciBib3VuZHMuCiAgICAgY29uc3QgUmVnaW9uJiBl
dmVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0RXZlbnRSZWdpb24oUmVnaW9uJiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDI0MzA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDMsNyAr
MTI0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICBp
ZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikgewogICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIGlubGluZXMsIGxpbmVib3hlcywgU1ZHIHRvby4KICAgICAgICAgLy8gRklY
TUU6IFRyYW5zZm9ybXM/Ci0gICAgICAgIGlmIChzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQ
b2ludGVyRXZlbnRzOjpOb25lKQorICAgICAgICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygpKQog
ICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uLT51bml0ZShlbmNsb3NpbmdJbnRSZWN0
KExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpKTsKIAogICAgICAgICAvLyBObyBuZWVk
IHRvIGNoZWNrIGRlc2NlbmRhbnRzIGlmIHdlIGRvbid0IGhhdmUgb3ZlcmZsb3cuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDI0MzA1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNDMsMTYgKzQyNDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYQogICAgIGJvb2wgaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kID0gcGFp
bnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSk7CiAgICAgYm9vbCBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQgPSBwYWludEZs
YWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNl
KTsKICAgICBib29sIGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzID0gcGFpbnRGbGFncy5jb250
YWlucyhQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKTsKKyAgICBib29sIGlzQ29s
bGVjdGluZ0V2ZW50UmVnaW9uID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyQ29sbGVj
dGluZ0V2ZW50UmVnaW9uKTsKICAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVkcyB0byBiZSBwYWlu
dGVkIGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIEFsc28sCiAgICAgLy8gdGhl
IG91dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUgYmFja2dyb3VuZCBwaGFzZSBkdXJpbmcgY29tcG9z
aXRlZCBzY3JvbGxpbmcuCiAgICAgLy8gSWYgaXQgd2VyZSBwYWludGVkIGluIHRoZSBmb3JlZ3Jv
dW5kIHBoYXNlLCBpdCB3b3VsZCBtb3ZlIHdpdGggdGhlIHNjcm9sbGVkCiAgICAgLy8gY29udGVu
dC4gV2hlbiBub3QgY29tcG9zaXRlZCBzY3JvbGxpbmcsIHRoZSBvdXRsaW5lIGlzIHBhaW50ZWQg
aW4gdGhlCiAgICAgLy8gZm9yZWdyb3VuZCBwaGFzZS4gU2luY2Ugc2Nyb2xsZWQgY29udGVudHMg
YXJlIG1vdmVkIGJ5IHJlcGFpbnRpbmcgaW4gdGhpcwogICAgIC8vIGNhc2UsIHRoZSBvdXRsaW5l
IHdvbid0IGdldCAnZHJhZ2dlZCBhbG9uZycuCi0gICAgYm9vbCBzaG91bGRQYWludE91dGxpbmUg
PSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMKKyAg
ICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFp
bnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24KICAgICAg
ICAgJiYgKChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRl
ZEJhY2tncm91bmQpCiAgICAgICAgIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYg
aXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSk7Ci0gICAgYm9vbCBzaG91bGRQYWludENv
bnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlz
UGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9
IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGlu
Z092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbjsKIAogICAgIGlm
IChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkg
JiYgIXJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgIXJlbmRlcmVyKCkuaXNEb2N1bWVudEVs
ZW1lbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CkBAIC00MzIzLDcgKzQzMjQsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAgICAgICAgICBwYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsKIAogICAgICAg
ICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3Q7Ci0gICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRs
aW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworICAgICAgICBpZiAoc2hvdWxk
UGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMgfHwgaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24pIHsKICAgICAgICAgICAgIC8vIENv
bGxlY3QgdGhlIGZyYWdtZW50cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xl
cyBhbmQgcGFpbnQgb2Zmc2V0cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3
aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBlYWNoCiAgICAgICAgICAgICAvLyBmcmFnbWVu
dCBzaG91bGQgcGFpbnQuIElmIHRoZSBwYXJlbnQncyBmaWx0ZXIgZGljdGF0ZXMgZnVsbCByZXBh
aW50IHRvIGVuc3VyZSBwcm9wZXIgZmlsdGVyIGVmZmVjdCwKICAgICAgICAgICAgIC8vIHVzZSB0
aGUgb3ZlcmZsb3cgY2xpcCBhcyBkaXJ0eSByZWN0LCBpbnN0ZWFkIG9mIG5vIGNsaXBwaW5nLiBJ
dCBtYWludGFpbnMgcHJvcGVyIGNsaXBwaW5nIGZvciBvdmVyZmxvdzo6c2Nyb2xsLgpAQCAtNDM1
Nyw2ICs0MzU4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzQ29sbGVjdGluZ0V2ZW50
UmVnaW9uKQorICAgICAgICAgICAgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGxheWVy
RnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOworCiAgICAgICAg
IGlmIChzaG91bGRQYWludE91dGxpbmUpCiAgICAgICAgICAgICBwYWludE91dGxpbmVGb3JGcmFn
bWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
cGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKIApAQCAtNDQ2NCw2
ICs0NDY4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KExheWVyTGlzdCBsYQogICAg
IGlmICghaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRS
ZWdpb24pICYmIHJlbmRlckJveCgpICYmICFyZW5kZXJCb3goKS0+aGFzUmVuZGVyT3ZlcmZsb3co
KSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlz
dE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCp0aGlzKTsKICNlbmRpZgpAQCAtNDc0
Niw4ICs0NzUzLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZwog
ICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZTo6
RmxvYXQsIGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQ
YWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICBwYWlu
dEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCwg
bGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50QmVo
YXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIHBhaW50Rm9yZWdy
b3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlOjpDaGlsZE91dGxpbmVzLCBsYXll
ckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlv
ciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGxvY2FsUGFpbnRp
bmdJbmZvLmV2ZW50UmVnaW9uKQotICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21l
bnRzV2l0aFBoYXNlKFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLCBsYXllckZyYWdtZW50cywgY29u
dGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNob3VsZENsaXApCkBAIC00
NzY5LDggKzQ3NzQsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFn
CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3Vu
ZFJlY3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJl
bmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5y
ZW5kZXJlcigpLCB0aGlzLCBsb2NhbFBhaW50aW5nSW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5B
Y2Nlc3NGb3JXaWRnZXRzKTsKICAgICAgICAgaWYgKHBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVn
cm91bmQpCiAgICAgICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IGxvY2Fs
UGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHM7Ci0gICAgICAgIGlmIChwaGFzZSA9PSBQ
YWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lv
biA9IGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uOwogICAgICAgICByZW5kZXJlcigpLnBh
aW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlv
bigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zm
c2V0KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKQEAgLTQ4NDMsNiArNDg0
NiwxNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdpb25Gb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbykKK3sKKyAgICBB
U1NFUlQobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb24pOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CisgICAgICAgIFBhaW50SW5mbyBwYWlu
dEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNl
OjpFdmVudFJlZ2lvbiwgeyB9KTsKKyAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uID0gbG9j
YWxQYWludGluZ0luZm8uZXZlbnRSZWdpb247CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFp
bnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSBy
ZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3VicGl4ZWxPZmZzZXQpKTsK
KyAgICB9Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICByZXR1cm4gaGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMjQzMDUxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJMYXllckZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUGFpbnRG
cmVxdWVuY3lUcmFja2VyLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHRyLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3MgQ2xpcFJl
Y3RzQ2FjaGU7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBj
bGFzcyBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU7Ci1jbGFzcyBSZWdpb247CiBjbGFzcyBSZW5k
ZXJGcmFnbWVudGVkRmxvdzsKIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVuZGVy
TGF5ZXJCYWNraW5nOwpAQCAtNjQxLDggKzY0MSw5IEBAIHB1YmxpYzoKICAgICAgICAgUGFpbnRM
YXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5ICAgICAgICAgICAgPSAxIDw8IDExLAogICAg
ICAgICBQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91bmQgICAgICAgICAgICA9IDEg
PDwgMTIsCiAgICAgICAgIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2Ug
ICAgICAgID0gMSA8PCAxMywKKyAgICAgICAgUGFpbnRMYXllckNvbGxlY3RpbmdFdmVudFJlZ2lv
biAgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
QWxsUGhhc2VzRmxhZ3MoKSB7IHJldHVybiB7IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
QmFja2dyb3VuZFBoYXNlLCAgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5k
UGhhc2UgfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFn
PiBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCkgeyByZXR1cm4g
eyBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSwgUGFpbnRMYXll
clBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UgfTsgfQogCiAgICAgZW51bSBjbGFz
cyBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHsgQW55T3JpZ2luLCBBY2Nlc3NpYmxlT3JpZ2lu
T25seSB9OwogCkBAIC05ODQsNiArOTg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFz
a0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJP
YmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKICAgICB2b2lkIHBhaW50Q2hpbGRDbGlw
cGluZ01hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwg
UmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CiAgICAgdm9pZCBwYWludFRy
YW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPik7CisgICAgdm9pZCBjb2xs
ZWN0RXZlbnRSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwogCiAgICAgUmVuZGVyTGF5ZXIq
IHRyYW5zcGFyZW50UGFpbnRpbmdBbmNlc3RvcigpOwogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI0MzA1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NjQsNiArNzY0LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZp
Z3VyYQogICAgIGlmICghbV9vd25pbmdMYXllci5pc1JlbmRlclZpZXdMYXllcigpKSB7CiAgICAg
ICAgIGJvb2wgZGlkVXBkYXRlQ29udGVudHNSZWN0ID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZURp
cmVjdGx5Q29tcG9zaXRlZEJveERlY29yYXRpb25zKGNvbnRlbnRzSW5mbywgZGlkVXBkYXRlQ29u
dGVudHNSZWN0KTsKKworICAgICAgICB1cGRhdGVFdmVudFJlZ2lvbigpOwogICAgIH0gZWxzZQog
ICAgICAgICB1cGRhdGVSb290TGF5ZXJDb25maWd1cmF0aW9uKCk7CiAgICAgCkBAIC0xNDMwLDYg
KzE0MzIsMjIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURyYXdzQ29udAogICAg
ICAgICBtX2JhY2tncm91bmRMYXllci0+c2V0RHJhd3NDb250ZW50KG1fYmFja2dyb3VuZExheWVy
UGFpbnRzRml4ZWRSb290QmFja2dyb3VuZCA/IGhhc1BhaW50ZWRDb250ZW50IDogY29udGVudHNJ
bmZvLnBhaW50c0JveERlY29yYXRpb25zKCkpOwogfQogCit2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlRXZlbnRSZWdpb24oKQoreworICAgIEdyYXBoaWNzQ29udGV4dCBudWxsQ29udGV4
dChudWxscHRyKTsKKyAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJ
bmZvKCZtX293bmluZ0xheWVyLCBjb21wb3NpdGVkQm91bmRzKCksIHsgfSwgTGF5b3V0U2l6ZSgp
KTsKKworICAgIFJlZ2lvbiBldmVudFJlZ2lvbjsKKyAgICBwYWludGluZ0luZm8uZXZlbnRSZWdp
b24gPSAmZXZlbnRSZWdpb247CisKKyAgICBhdXRvIHBhaW50RmxhZ3MgPSBSZW5kZXJMYXllcjo6
cGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpIHwgUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRSZWdpb247CisgICAgbV9vd25pbmdMYXllci5w
YWludExheWVyQ29udGVudHMobnVsbENvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7
CisKKyAgICBldmVudFJlZ2lvbi50cmFuc2xhdGUocm91bmRlZEludFNpemUoY29udGVudE9mZnNl
dEluQ29tcG9zaXRpbmdMYXllcigpKSk7CisKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEV2ZW50
UmVnaW9uKFdURk1vdmUoZXZlbnRSZWdpb24pKTsKK30KKwogLy8gUmV0dXJuIHRydWUgaWYgdGhl
IGxheWVyIGNoYW5nZWQuCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQW5jZXN0b3JD
bGlwcGluZ0xheWVyKGJvb2wgbmVlZHNBbmNlc3RvckNsaXApCiB7CkBAIC0yNTg1LDE5ICsyNjAz
LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogCiAgICAgUmVu
ZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbygmbV9vd25pbmdMYXllciwg
cGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIC1tX3N1YnBpeGVsT2Zmc2V0RnJvbVJlbmRl
cmVyKTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUmVnaW9uIGV2ZW50UmVnaW9u
OwotICAgIHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbiA9ICZldmVudFJlZ2lvbjsKLSNlbmRpZgot
CiAgICAgbV9vd25pbmdMYXllci5wYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcGFpbnRp
bmdJbmZvLmV2ZW50UmVnaW9uID0gbnVsbHB0cjsKLSAgICBldmVudFJlZ2lvbi50cmFuc2xhdGUo
cm91bmRlZEludFNpemUoY29udGVudE9mZnNldEluQ29tcG9zaXRpbmdMYXllcigpKSk7Ci0gICAg
bV9ncmFwaGljc0xheWVyLT5zZXRFdmVudFJlZ2lvbihXVEZNb3ZlKGV2ZW50UmVnaW9uKSk7Ci0j
ZW5kaWYKLQogICAgIGlmIChtX293bmluZ0xheWVyLmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xs
YmFycygpKQogICAgICAgICBtX293bmluZ0xheWVyLnBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0
LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50
aW5nT3ZlcmxheVNjcm9sbGJhcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
Miw2ICszNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGFpbnRzQ29udGVudChSZW5kZXJMYXll
cjo6UGFpbnRlZENvbnRlbnRSZXF1ZXN0JikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZURyYXdz
Q29udGVudChQYWludGVkQ29udGVudHNJbmZvJik7CisgICAgdm9pZCB1cGRhdGVFdmVudFJlZ2lv
bigpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgaGFz
IG5vIHZpc2libGUgY29udGVudC4KICAgICBib29sIGlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRp
bmdMYXllcihQYWludGVkQ29udGVudHNJbmZvJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjQzMDY3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxOS0wMy0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgTGF5ZXIgd2l0aCBubyBiYWNraW5nIHN0b3JlIHNob3VsZCBzdGlsbCBo
aXQtdGVzdCBvdmVyIGEgc2Nyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTM3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2NTIwNzg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3
cy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29sbGVjdERlc2NlbmRhbnRWaWV3c0F0UG9pbnQpOgor
CisgICAgICAgIE5vIG5lZWQgZm9yIHNwZWNpYWwgV0tUaWxlZEJhY2tpbmdWaWV3LCB0aWxlZCB2
aWV3cyBub3cgaGF2ZSBjb3JyZWN0IGV2ZW50IHJlZ2lvbnMuCisKIDIwMTktMDMtMTggIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBC
dW1wIGRlcGVuZGVuY2llcyB0byB3cGUtMS4wIGFuZCB3cGViYWNrZW5kLWZkby0xLjAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0JKHJldmlzaW9uIDI0MzA1
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsMTEgKzcyLDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbQogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVXZWJMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlUm9vdExheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1w
bGVMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0NvbXBvc2l0aW5n
VmlldyBhbGxvY10gaW5pdF0pOwotICAgICAgICAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VBZG9wdGlu
Z1ZpZXcoW1tXS1RpbGVkQmFja2luZ1ZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pOwogCiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoK
ICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVy
KHByb3BlcnRpZXMubGF5ZXJJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVW
aWV3cy5oCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDYgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQGludGVyZmFjZSBXS0NvbXBvc2l0
aW5nVmlldyA6IFVJVmlldwogQGVuZAogCi1AaW50ZXJmYWNlIFdLVGlsZWRCYWNraW5nVmlldyA6
IFdLQ29tcG9zaXRpbmdWaWV3Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tUcmFuc2Zvcm1WaWV3IDog
V0tDb21wb3NpdGluZ1ZpZXcKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVy
VHJlZVZpZXdzLm1tCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw4ICs0OSw2IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3REZXNjZW5kYW50Vmlld3NB
dFBvaW4KICAgICAgICAgYXV0byBoYW5kbGVzRXZlbnQgPSBbJl0gewogICAgICAgICAgICAgaWYg
KCFbdmlldyBwb2ludEluc2lkZTpzdWJ2aWV3UG9pbnQgd2l0aEV2ZW50OmV2ZW50XSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZD
bGFzczpbV0tUaWxlZEJhY2tpbmdWaWV3IGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICBpZiAoIVt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRp
bmdWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICBhdXRvKiBub2RlID0gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Zm9yQ0FMYXllcih2aWV3LmxheWVy
KTsKQEAgLTExNSw5ICsxMTMsNiBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAKIEBlbmQK
IAotQGltcGxlbWVudGF0aW9uIFdLVGlsZWRCYWNraW5nVmlldwotQGVuZAotCiBAaW1wbGVtZW50
YXRpb24gV0tUcmFuc2Zvcm1WaWV3CiAKICsgKENsYXNzKWxheWVyQ2xhc3MKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzA1MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI2IEBACisyMDE5LTAzLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBMYXllciB3aXRoIG5vIGJhY2tpbmcgc3RvcmUgc2hvdWxkIHN0aWxs
IGhpdC10ZXN0IG92ZXIgYSBzY3JvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Mzc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODY1MjA3
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW9y
Z2FuaXplIHRoZSB0ZXN0cyBhIGJpdCBhbmQgYWRkIHNvbWUgbmV3IG9uZXMuCisKKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
LTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92
ZXJsYXAtMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lv
cy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
LTQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNj
cm9sbC1vdmVybGFwLmh0bWw6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292
ZXJmbG93LXNjcm9sbC1vdmVybGFwLmpzOiBBZGRlZC4KKyAgICAgICAgKHNsZWVwKToKKyAgICAg
ICAgKGFzeW5jLnJ1blRlc3QpOgorICAgICAgICAobG9nU2Nyb2xsKToKKyAgICAgICAgKG91dHB1
dENhc2UpOgorCiAyMDE5LTAzLTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIG5ldyBNZWRpYUNhcGFiaWxpdGllc0V4dGVuc2lvbnNFbmFibGVkIHNl
dHRpbmcKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3Jv
bGwtb3ZlcmxhcC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI0MzA1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxv
dy1zY3JvbGwtb3ZlcmxhcC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsx
LDggQEAKIFRlc3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggbm9uLXRyaXZpYWwgb3Zlcmxh
cCBhcmUgY29ycmVjdGx5IHRhcmdldGVkLgogCi1jYXNlIDE6IAotY2FzZSAyOiBTY3JvbGxhYmxl
IDIgCitjYXNlIDE6IFNjcm9sbGFibGUgMSAKK2Nhc2UgMjogCiBjYXNlIDM6IFNjcm9sbGFibGUg
MyAKIGNhc2UgNDogU2Nyb2xsYWJsZSA0IAotY2FzZSA1OiBTY3JvbGxhYmxlIDUgCi1jYXNlIDY6
IAorY2FzZSA1OiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi5odG1sCShyZXZpc2lvbiAy
NDMwNTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xs
LW92ZXJsYXAtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxNCBAQCBib2R5IHsK
ICAgICBoZWlnaHQ6IDEwMHB4OwogICAgIGJhY2tncm91bmQ6IHJlZDsKIH0KKy5vdmVybGFwcGlu
Zy1lbXB0eSB7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgbGVmdDogMjVweDsKKyAgICB0
b3A6IDI1cHg7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgYmFj
a2dyb3VuZDogYmx1ZTsKK30KIC5jbGlwIHsKICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKICAgICB3
aWR0aDogMTAwcHg7CkBAIC00OSw4NSArNTcsNyBAQCBib2R5IHsKIH0KIDwvc3R5bGU+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5h
YmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNPdmVyZmxvd1Njcm9s
bGluZ0VuYWJsZWQodHJ1ZSk7Ci19Ci0KLWZ1bmN0aW9uIHNsZWVwKGRlbGF5KQotewotICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5
KTsgfSk7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgZm9yIChjb25zdCBz
Y3JvbGxhYmxlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vdmVyZmxvd3Njcm9sbCcp
KSB7Ci0gICAgICAgIHNjcm9sbGFibGUuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgbG9nU2Nyb2xsKGUudGFyZ2V0KTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAgIGZvciAoY29uc3Qgc2Ny
b2xsY29udGVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2Nyb2xsY29udGVudCcp
KQotICAgICAgICAgICAgc2Nyb2xsY29udGVudC5pbm5lclRleHQgPSAiU2Nyb2xsYWJsZSAiICsg
KytpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGxldCBpID0gMDsKLSAgICAgICAgZm9yIChjb25z
dCBvdmVybGFwcGluZyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub3ZlcmxhcHBpbmcn
KSkKLSAgICAgICAgICAgIG92ZXJsYXBwaW5nLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiT3ZlcmxhcHBpbmcgIiArICsraSksIG92ZXJsYXBwaW5nLmZpcnN0Q2hpbGQpOwot
ICAgIH0KLQotCi0gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBvZiBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKQotICAgICAgICB0ZXN0Y2FzZS5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOwotCi0gICAgewotICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAg
IGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhc2Un
KSkgewotICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxh
eSA9ICdpbmxpbmUtYmxvY2snOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCB0YXJn
ZXQgPSB0ZXN0Y2FzZS5xdWVyeVNlbGVjdG9yKCcudGFyZ2V0Jyk7Ci0gICAgICAgICAgICBjb25z
dCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgY29u
c3QgY2VudGVyWCA9IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDI7Ci0gICAgICAgICAgICBj
b25zdCBjZW50ZXJZID0gKHJlY3QudG9wICsgcmVjdC5ib3R0b20pIC8gMjsKLSAgICAgICAgICAg
IGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoY2VudGVyWCwgY2VudGVyWSwgY2Vu
dGVyWCwgY2VudGVyWSAtIDMwKTsKLSAgICAgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoY2Vu
dGVyWCwgY2VudGVyWSAtIDMwKTsKLSAgICAgICAgICAgIGF3YWl0IHNsZWVwKDUwMCk7Ci0KLSAg
ICAgICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICBv
dXRwdXRDYXNlKGkpOwotICAgICAgICB9Ci0gICB9Ci0KLSAgICBmb3IgKGNvbnN0IHRlc3RjYXNl
IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXNlJykpCi0gICAgICAgIHRlc3RjYXNl
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0KLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0KLQotY29uc3Qgc2Nyb2xsZWRFbGVtZW50cyA9IG5ldyBTZXQoKTsKLQotZnVuY3Rpb24gbG9n
U2Nyb2xsKGVsZW1lbnQpIHsKLSAgICBpZiAoc2Nyb2xsZWRFbGVtZW50cy5oYXMoZWxlbWVudCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBzY3JvbGxlZEVsZW1lbnRzLmFkZChlbGVtZW50KTsKLX0K
LQotZnVuY3Rpb24gb3V0cHV0Q2FzZShpKSB7Ci0gICAgbG9nLmlubmVyVGV4dCArPSAiY2FzZSAi
ICsgaSArICI6ICI7Ci0gICAgZm9yIChjb25zdCBzY3JvbGxlZCBvZiBzY3JvbGxlZEVsZW1lbnRz
KQotICAgICAgICBsb2cuaW5uZXJUZXh0ICs9IHNjcm9sbGVkLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoInNjcm9sbGNvbnRlbnQiKVswXS5pbm5lclRleHQgKyAiICI7Ci0gICAgbG9nLmlubmVyVGV4
dCArPSAiXG4iOwotICAgIHNjcm9sbGVkRWxlbWVudHMuY2xlYXIoKTsKLX0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KQEAgLTEzNyw4
ICs2Nyw3IEBAIFRlc3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggbm9uLXRyaXYKICAgICA8
ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgogICAgICAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxjb250ZW50Ij48L2Rpdj4KICAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJvdmVybGFw
cGluZyIgc3R5bGU9ImxlZnQ6IDgwcHgiPgotICAgICAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGlu
ZyIgc3R5bGU9ImxlZnQ6IC00MHB4OyB0b3A6IC0zMHB4Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJvdmVybGFwcGluZyIgc3R5bGU9InZpc2liaWxpdHk6aGlkZGVuIj4KICAgICA8L2Rpdj4KIDwv
ZGl2PgogCkBAIC0xNDYsNyArNzUsNyBAQCBUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRo
IG5vbi10cml2CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KICAgICAg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CiAgICAgPC9kaXY+Ci0gICAgPGRp
diBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJib3gtc2hhZG93OiAwcHggMHB4IDMycHggMzJw
eCBibHVlOyBsZWZ0OiA2MHB4OyB0b3A6IDYwcHgiPgorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBw
aW5nLWVtcHR5IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCI+CiAgICAgPC9k
aXY+CiA8L2Rpdj4KIApAQCAtMTU0LDE2ICs4Myw3IEBAIFRlc3QgdGhhdCBzY3JvbGxhYmxlIGFy
ZWFzIHdpdGggbm9uLXRyaXYKICAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQi
PgogICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KICAgICA8L2Rpdj4K
LSAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9InBvaW50ZXItZXZlbnRzOm5vbmUi
PgotICAgIDwvZGl2PgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImNhc2UiPgotICAgIDxkaXYgY2xh
c3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+Ci0gICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNv
bnRlbnQiPjwvZGl2PgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBz
dHlsZT0idG9wOi02MHB4Ij4KLSAgICBUZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJi
b3gtc2hhZG93OiAwcHggMHB4IDMycHggMzJweCBibHVlOyBsZWZ0OiA2MHB4OyB0b3A6IDYwcHgi
PgogICAgIDwvZGl2PgogPC9kaXY+CiAKQEAgLTE3MSw4ICs5MSw3IEBAIFRlc3QgdGhhdCBzY3Jv
bGxhYmxlIGFyZWFzIHdpdGggbm9uLXRyaXYKICAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9s
bCB0YXJnZXQiPgogICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KICAg
ICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9InRvcDotNjBweDsg
cGFkZGluZy1sZWZ0OjQwcHgiPgotICAgIFRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQKKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9
InBvaW50ZXItZXZlbnRzOm5vbmUiPgogICAgIDwvZGl2PgogPC9kaXY+CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0zLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3Zl
cmZsb3ctc2Nyb2xsLW92ZXJsYXAtMy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorVGVzdCB0aGF0IHNjcm9s
bGFibGUgYXJlYXMgd2l0aCB0ZXh0IG92ZXJsYXAgYXJlIGNvcnJlY3RseSB0YXJnZXRlZC4KKwor
Y2FzZSAxOiBTY3JvbGxhYmxlIDEgCitjYXNlIDI6IFNjcm9sbGFibGUgMiAKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ct
c2Nyb2xsLW92ZXJsYXAtMy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0zLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1z
Y2FsZT0xIj4KKzxzdHlsZT4KK2JvZHkgeworICAgIHRvdWNoLWFjdGlvbjogbm9uZTsKK30KKy5j
YXNlIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnNjcm9sbGNvbnRl
bnQgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBoZWlnaHQ6IDUwMHB4OworICAgIGJhY2tncm91
bmQ6IGdyZWVuOworfQorCisub3ZlcmZsb3dzY3JvbGwgeworICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworfQorLm92ZXJsYXBwaW5nIHsK
KyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICBsZWZ0OiAyNXB4OworICAgIHRvcDogMjVweDsK
KyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBiYWNrZ3JvdW5kOiBy
ZWQ7Cit9CisuY2xpcCB7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMHB4
OworICAgIGhlaWdodDogMTAwcHg7CisgICAgb3ZlcmZsb3c6aGlkZGVuOworfQorLmxhcmdlIHsK
KyAgICB3aWR0aDogMzAwMHB4OworICAgIGhlaWdodDogMTUwcHg7Cit9CisjbG9nIHsKKyAgICBw
b3NpdGlvbjpyZWxhdGl2ZTsKKyAgICB3aGl0ZS1zcGFjZTogcHJlOworfQorPC9zdHlsZT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3Qg
dGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggdGV4dCBvdmVybGFwIGFyZSBjb3JyZWN0bHkgdGFy
Z2V0ZWQuCis8L3A+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorICAgIDxkaXYgY2xhc3M9Im92ZXJm
bG93c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiPjwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0idG9w
Oi02MHB4Ij4KKyAgICBUZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
dGV4dCB0ZXh0CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+CisgICAg
PGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0i
c2Nyb2xsY29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3Zlcmxh
cHBpbmciIHN0eWxlPSJ0b3A6LTYwcHg7IHBhZGRpbmctbGVmdDo0MHB4Ij4KKyAgICBUZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0CisgICAgPC9kaXY+
Cis8L2Rpdj4KKworPGRpdiBpZD1sb2c+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9p
b3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtNC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
LTQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVzdCB0aGF0
IHNjcm9sbGFibGUgYXJlYXMgd2l0aCBvdmVyZmxvd2luZyBvdmVybGFwIGFyZSBjb3JyZWN0bHkg
dGFyZ2V0ZWQuCisKK2Nhc2UgMTogCitjYXNlIDI6IAorY2FzZSAzOiAKK2Nhc2UgNDogCitjYXNl
IDU6IAorY2FzZSA2OiBTY3JvbGxhYmxlIDYgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTQu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3Zl
cmZsb3ctc2Nyb2xsLW92ZXJsYXAtNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPHN0eWxl
PgorYm9keSB7CisgICAgdG91Y2gtYWN0aW9uOiBub25lOworfQorLmNhc2UgeworICAgIHdpZHRo
OiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cisuc2Nyb2xsY29udGVudCB7CisgICAgd2lkdGg6
IDUwMHB4OworICAgIGhlaWdodDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogZ3JlZW47Cit9CisK
Ky5vdmVyZmxvd3Njcm9sbCB7CisgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICBoZWlnaHQ6IDEw
MHB4OworICAgIHdpZHRoOiAxMDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm9y
ZGVyOiAycHggc29saWQgYmxhY2s7Cit9Cisub3ZlcmxhcHBpbmcgeworICAgIHBvc2l0aW9uOmFi
c29sdXRlOworICAgIGxlZnQ6IDI1cHg7CisgICAgdG9wOiAyNXB4OworICAgIHdpZHRoOiAxMDBw
eDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKy5jbGlwIHsK
KyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICBvdmVyZmxvdzpoaWRkZW47Cit9CisubGFyZ2UgeworICAgIHdpZHRoOiAzMDAw
cHg7CisgICAgaGVpZ2h0OiAxNTBweDsKK30KKyNsb2cgeworICAgIHBvc2l0aW9uOnJlbGF0aXZl
OworICAgIHdoaXRlLXNwYWNlOiBwcmU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCB0aGF0IHNjcm9sbGFibGUg
YXJlYXMgd2l0aCBvdmVyZmxvd2luZyBvdmVybGFwIGFyZSBjb3JyZWN0bHkgdGFyZ2V0ZWQuCis8
L3A+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xs
IHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAg
IDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogODBweCI+
CisgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogLTQwcHg7IHRv
cDogLTMwcHgiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2Ui
PgorICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYg
Y2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogODBweDsgei1pbmRleDowIj4KKyAgICAgICAgPGRp
diBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBweDsgdG9wOiAtMzBweCI+PC9k
aXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+CisgICAgPGRpdiBj
bGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xs
Y29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmci
IHN0eWxlPSJsZWZ0OiA4MHB4OyB0b3A6IDkwcHg7IHotaW5kZXg6MCI+CisgICAgICAgIDxkaXYg
Y2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTEyMHB4Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNs
YXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxj
b250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIg
c3R5bGU9ImxlZnQ6IDgwcHg7IHRvcDogOTBweDsgei1pbmRleDowIj4KKyAgICAgICAgPGRpdiBj
bGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBweDsgdG9wOiAtMTIwcHg7IHotaW5k
ZXg6LTEiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgor
ICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xh
c3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92
ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogODBweDsgdG9wOiA5MHB4OyB6LWluZGV4OjAiPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IC00MHB4OyB0b3A6IC0x
MjBweDsgei1pbmRleDoxIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IDgwcHg7IHRvcDogNjBweDsgei1pbmRl
eDowIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBw
eDsgdG9wOiAtMTIwcHgiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9bG9n
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbAko
cmV2aXNpb24gMjQzMDUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDg1ICs0OSw3IEBA
IGJvZHkgewogfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFz
aWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKHRydWUpOwotICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKLX0KLQotZnVuY3Rp
b24gc2xlZXAoZGVsYXkpCi17Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7
IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpOyB9KTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgICBmb3IgKGNvbnN0IHNjcm9sbGFibGUgb2YgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLm92ZXJmbG93c2Nyb2xsJykpIHsKLSAgICAgICAgc2Nyb2xsYWJsZS5hZGRFdmVu
dExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBsb2dTY3JvbGwo
ZS50YXJnZXQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGxldCBpID0g
MDsKLSAgICAgICAgZm9yIChjb25zdCBzY3JvbGxjb250ZW50IG9mIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJy5zY3JvbGxjb250ZW50JykpCi0gICAgICAgICAgICBzY3JvbGxjb250ZW50Lmlu
bmVyVGV4dCA9ICJTY3JvbGxhYmxlICIgKyArK2k7Ci0gICAgfQotICAgIHsKLSAgICAgICAgbGV0
IGkgPSAwOwotICAgICAgICBmb3IgKGNvbnN0IG92ZXJsYXBwaW5nIG9mIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5vdmVybGFwcGluZycpKQotICAgICAgICAgICAgb3ZlcmxhcHBpbmcuaW5u
ZXJUZXh0ID0gIk92ZXJsYXBwaW5nICIgKyArK2k7Ci0gICAgfQotCi0KLSAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmb3IgKGNvbnN0IHRlc3RjYXNlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5jYXNlJykpCi0gICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0KLSAg
ICB7Ci0gICAgICAgIGxldCBpID0gMDsKLSAgICAgICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBvZiBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKSB7Ci0gICAgICAgICAgICArK2k7Ci0g
ICAgICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRlc3RjYXNlLnF1ZXJ5U2VsZWN0
b3IoJy50YXJnZXQnKTsKLSAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7Ci0gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHJlY3QubGVmdCAr
IHJlY3QucmlnaHQpIC8gMjsKLSAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAocmVjdC50b3Ag
KyByZWN0LmJvdHRvbSkgLyAyOwotICAgICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBv
aW50VG9Qb2ludChjZW50ZXJYLCBjZW50ZXJZLCBjZW50ZXJYLCBjZW50ZXJZIC0gMzApOwotICAg
ICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2ludChjZW50ZXJYLCBjZW50ZXJZIC0gMzApOwotICAg
ICAgICAgICAgYXdhaXQgc2xlZXAoNTAwKTsKLQotICAgICAgICAgICAgdGVzdGNhc2Uuc3R5bGUu
ZGlzcGxheSA9ICdub25lJzsKLSAgICAgICAgICAgIG91dHB1dENhc2UoaSk7Ci0gICAgICAgIH0K
LSAgIH0KLQotICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLmNhc2UnKSkKLSAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
LQotICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1jb25zdCBzY3JvbGxlZEVsZW1l
bnRzID0gbmV3IFNldCgpOwotCi1mdW5jdGlvbiBsb2dTY3JvbGwoZWxlbWVudCkgewotICAgIGlm
IChzY3JvbGxlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNj
cm9sbGVkRWxlbWVudHMuYWRkKGVsZW1lbnQpOwotfQotCi1mdW5jdGlvbiBvdXRwdXRDYXNlKGkp
IHsKLSAgICBsb2cuaW5uZXJUZXh0ICs9ICJjYXNlICIgKyBpICsgIjogIjsKLSAgICBmb3IgKGNv
bnN0IHNjcm9sbGVkIG9mIHNjcm9sbGVkRWxlbWVudHMpCi0gICAgICAgIGxvZy5pbm5lclRleHQg
Kz0gc2Nyb2xsZWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgic2Nyb2xsY29udGVudCIpWzBdLmlu
bmVyVGV4dCArICIgIjsKLSAgICBsb2cuaW5uZXJUZXh0ICs9ICJcbiI7Ci0gICAgc2Nyb2xsZWRF
bGVtZW50cy5jbGVhcigpOwotfQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KIDxwPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
cmVzb3VyY2VzL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5q
cwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMv
b3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBA
QAorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0QXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKHRydWUpOworfQorCitmdW5j
dGlvbiBzbGVlcChkZWxheSkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+
IHsgc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSk7IH0pOworfQorCithc3luYyBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgIGZvciAoY29uc3Qgc2Nyb2xsYWJsZSBvZiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcub3ZlcmZsb3dzY3JvbGwnKSkgeworICAgICAgICBzY3JvbGxhYmxlLmFkZEV2
ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGxvZ1Njcm9s
bChlLnRhcmdldCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IGkg
PSAwOworICAgICAgICBmb3IgKGNvbnN0IHNjcm9sbGNvbnRlbnQgb2YgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnLnNjcm9sbGNvbnRlbnQnKSkKKyAgICAgICAgICAgIHNjcm9sbGNvbnRlbnQu
aW5uZXJUZXh0ID0gIlNjcm9sbGFibGUgIiArICsraTsKKyAgICB9CisgICAgeworICAgICAgICBs
ZXQgaSA9IDA7CisgICAgICAgIGZvciAoY29uc3Qgb3ZlcmxhcHBpbmcgb2YgZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLm92ZXJsYXBwaW5nJykpCisgICAgICAgICAgICBvdmVybGFwcGluZy5p
bnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIk92ZXJsYXBwaW5nICIgKyArK2kp
LCBvdmVybGFwcGluZy5maXJzdENoaWxkKTsKKyAgICB9CisKKworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNh
c2UnKSkKKyAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIHsK
KyAgICAgICAgbGV0IGkgPSAwOworICAgICAgICBmb3IgKGNvbnN0IHRlc3RjYXNlIG9mIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXNlJykpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAg
ICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsKKworICAgICAg
ICAgICAgY29uc3QgdGFyZ2V0ID0gdGVzdGNhc2UucXVlcnlTZWxlY3RvcignLnRhcmdldCcpOwor
ICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
KyAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSAocmVjdC5sZWZ0ICsgcmVjdC5yaWdodCkgLyAy
OworICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9IChyZWN0LnRvcCArIHJlY3QuYm90dG9tKSAv
IDI7CisgICAgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGNlbnRl
clgsIGNlbnRlclksIGNlbnRlclgsIGNlbnRlclkgLSAzMCk7CisgICAgICAgICAgICBhd2FpdCBs
aWZ0VXBBdFBvaW50KGNlbnRlclgsIGNlbnRlclkgLSAzMCk7CisgICAgICAgICAgICBhd2FpdCBz
bGVlcCg1MDApOworCisgICAgICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OworICAgICAgICAgICAgb3V0cHV0Q2FzZShpKTsKKyAgICAgICAgfQorICAgfQorCisgICAgZm9y
IChjb25zdCB0ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKQor
ICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCisgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Cit9CisKK2NvbnN0IHNjcm9sbGVkRWxlbWVudHMgPSBuZXcgU2V0KCk7
CisKK2Z1bmN0aW9uIGxvZ1Njcm9sbChlbGVtZW50KSB7CisgICAgaWYgKHNjcm9sbGVkRWxlbWVu
dHMuaGFzKGVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsZWRFbGVtZW50cy5h
ZGQoZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIG91dHB1dENhc2UoaSkgeworICAgIGxvZy5pbm5l
clRleHQgKz0gImNhc2UgIiArIGkgKyAiOiAiOworICAgIGZvciAoY29uc3Qgc2Nyb2xsZWQgb2Yg
c2Nyb2xsZWRFbGVtZW50cykKKyAgICAgICAgbG9nLmlubmVyVGV4dCArPSBzY3JvbGxlZC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCJzY3JvbGxjb250ZW50IilbMF0uaW5uZXJUZXh0ICsgIiAiOwor
ICAgIGxvZy5pbm5lclRleHQgKz0gIlxuIjsKKyAgICBzY3JvbGxlZEVsZW1lbnRzLmNsZWFyKCk7
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365028</attachid>
            <date>2019-03-18 10:39:26 -0700</date>
            <delta_ts>2019-03-19 01:46:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-update-composite-2.patch</filename>
            <type>text/plain</type>
            <size>35894</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTAzLTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBMYXllciB3aXRoIG5vIGJhY2tp
bmcgc3RvcmUgc2hvdWxkIHN0aWxsIGhpdC10ZXN0IG92ZXIgYSBzY3JvbGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Mzc4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODY1MjA3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9s
bC1vdmVybGFwLTMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLTQuaHRtbAorCisgICAgICAgIE1vdmUgY29sbGVjdGluZyBldmVu
dCByZWdpb24gZnJvbSBwYWludCB0byBjb21wb3NpdGluZyB1cGRhdGUgdGltZS4KKyAgICAgICAg
VGhpcyBzb2x2ZXMgYSBudW1iZXIgb2YgcHJvYmxlbXMgaW5jbHVkaW5nIHJlZ2lvbnMgZm9yIG5v
bi1wYWludGluZyBsYXllcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6CisKKyAgICAgICAgVXNlIHRoZSBl
eGlzdGluZyB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgaGVscGVyLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dExheWVyQ29udGVudHMpOgorCisgICAgICAgIFVzZSBmbGFnIGZvciBldmVudCByZWdpb24gY29s
bGVjdGluZywgZG9uJ3QgcGFpbnQgY29udGVudC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCk6CisKKyAgICAgICAgV2UgY2FuIGJhaWwgb3V0IGltbWVkaWF0ZWx5
IGlmIHRoZXJlIGlzIG5vIG92ZXJmbG93LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyk6CisK
KyAgICAgICAgTW92ZSB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZp
Z3VyYXRpb24pOgorCisgICAgICAgIFVwZGF0ZSBldmVudCByZWdpb24gb24gYmFja2luZyBjb25m
aWd1cmF0aW9uIHVwZGF0ZS4gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgYW55dGhpbmcgaW50ZXJlc3Rp
bmcgY2hhbmdlcyBvbiBhIHN1YmxheWVyLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaDoKKwogMjAxOS0wMy0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046ICF2bS5pc0luaXRpYWxpemluZ09iamVjdCgp
IHZvaWQqIEpTQzo6dHJ5QWxsb2NhdGVDZWxsSGVscGVyPEpTQzo6U3RydWN0dXJlPiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
Myw3ICs0NTMsNiBAQCBwdWJsaWM6CiAgICAgV2luZFJ1bGUgc2hhcGVMYXllcldpbmRSdWxlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFNoYXBlTGF5ZXJXaW5kUnVsZShXaW5kUnVsZSk7
CiAKLSAgICAvLyBOb24tbnVsbCBpZiB0aGUgZXZlbnQgc2Vuc2l0aXZlIHJlZ2lvbiBvZiB0aGUg
bGF5ZXIgZGlmZmVycyBmcm9tIHRoZSBsYXllciBib3VuZHMuCiAgICAgY29uc3QgUmVnaW9uJiBl
dmVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0RXZlbnRSZWdpb24oUmVnaW9uJiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDI0MzA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDMsNyAr
MTI0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICBp
ZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikgewogICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIGlubGluZXMsIGxpbmVib3hlcywgU1ZHIHRvby4KICAgICAgICAgLy8gRklY
TUU6IFRyYW5zZm9ybXM/Ci0gICAgICAgIGlmIChzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQ
b2ludGVyRXZlbnRzOjpOb25lKQorICAgICAgICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygpKQog
ICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uLT51bml0ZShlbmNsb3NpbmdJbnRSZWN0
KExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpKTsKIAogICAgICAgICAvLyBObyBuZWVk
IHRvIGNoZWNrIGRlc2NlbmRhbnRzIGlmIHdlIGRvbid0IGhhdmUgb3ZlcmZsb3cuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDI0MzA1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNDMsMTYgKzQyNDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYQogICAgIGJvb2wgaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kID0gcGFp
bnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSk7CiAgICAgYm9vbCBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQgPSBwYWludEZs
YWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNl
KTsKICAgICBib29sIGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzID0gcGFpbnRGbGFncy5jb250
YWlucyhQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKTsKKyAgICBib29sIGlzQ29s
bGVjdGluZ0V2ZW50UmVnaW9uID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyQ29sbGVj
dGluZ0V2ZW50UmVnaW9uKTsKICAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVkcyB0byBiZSBwYWlu
dGVkIGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIEFsc28sCiAgICAgLy8gdGhl
IG91dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUgYmFja2dyb3VuZCBwaGFzZSBkdXJpbmcgY29tcG9z
aXRlZCBzY3JvbGxpbmcuCiAgICAgLy8gSWYgaXQgd2VyZSBwYWludGVkIGluIHRoZSBmb3JlZ3Jv
dW5kIHBoYXNlLCBpdCB3b3VsZCBtb3ZlIHdpdGggdGhlIHNjcm9sbGVkCiAgICAgLy8gY29udGVu
dC4gV2hlbiBub3QgY29tcG9zaXRlZCBzY3JvbGxpbmcsIHRoZSBvdXRsaW5lIGlzIHBhaW50ZWQg
aW4gdGhlCiAgICAgLy8gZm9yZWdyb3VuZCBwaGFzZS4gU2luY2Ugc2Nyb2xsZWQgY29udGVudHMg
YXJlIG1vdmVkIGJ5IHJlcGFpbnRpbmcgaW4gdGhpcwogICAgIC8vIGNhc2UsIHRoZSBvdXRsaW5l
IHdvbid0IGdldCAnZHJhZ2dlZCBhbG9uZycuCi0gICAgYm9vbCBzaG91bGRQYWludE91dGxpbmUg
PSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMKKyAg
ICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFp
bnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24KICAgICAg
ICAgJiYgKChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRl
ZEJhY2tncm91bmQpCiAgICAgICAgIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYg
aXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSk7Ci0gICAgYm9vbCBzaG91bGRQYWludENv
bnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlz
UGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9
IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGlu
Z092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbjsKIAogICAgIGlm
IChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkg
JiYgIXJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgIXJlbmRlcmVyKCkuaXNEb2N1bWVudEVs
ZW1lbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CkBAIC00MzIzLDcgKzQzMjQsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAgICAgICAgICBwYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsKIAogICAgICAg
ICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3Q7Ci0gICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRs
aW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworICAgICAgICBpZiAoc2hvdWxk
UGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMgfHwgaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24pIHsKICAgICAgICAgICAgIC8vIENv
bGxlY3QgdGhlIGZyYWdtZW50cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xl
cyBhbmQgcGFpbnQgb2Zmc2V0cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3
aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBlYWNoCiAgICAgICAgICAgICAvLyBmcmFnbWVu
dCBzaG91bGQgcGFpbnQuIElmIHRoZSBwYXJlbnQncyBmaWx0ZXIgZGljdGF0ZXMgZnVsbCByZXBh
aW50IHRvIGVuc3VyZSBwcm9wZXIgZmlsdGVyIGVmZmVjdCwKICAgICAgICAgICAgIC8vIHVzZSB0
aGUgb3ZlcmZsb3cgY2xpcCBhcyBkaXJ0eSByZWN0LCBpbnN0ZWFkIG9mIG5vIGNsaXBwaW5nLiBJ
dCBtYWludGFpbnMgcHJvcGVyIGNsaXBwaW5nIGZvciBvdmVyZmxvdzo6c2Nyb2xsLgpAQCAtNDM1
Nyw2ICs0MzU4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzQ29sbGVjdGluZ0V2ZW50
UmVnaW9uKQorICAgICAgICAgICAgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGxheWVy
RnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOworCiAgICAgICAg
IGlmIChzaG91bGRQYWludE91dGxpbmUpCiAgICAgICAgICAgICBwYWludE91dGxpbmVGb3JGcmFn
bWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
cGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKIApAQCAtNDQ2NCw2
ICs0NDY4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KExheWVyTGlzdCBsYQogICAg
IGlmICghaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRS
ZWdpb24pICYmIHJlbmRlckJveCgpICYmICFyZW5kZXJCb3goKS0+aGFzUmVuZGVyT3ZlcmZsb3co
KSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlz
dE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCp0aGlzKTsKICNlbmRpZgpAQCAtNDc0
Niw4ICs0NzUzLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZwog
ICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZTo6
RmxvYXQsIGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQ
YWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICBwYWlu
dEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCwg
bGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50QmVo
YXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIHBhaW50Rm9yZWdy
b3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlOjpDaGlsZE91dGxpbmVzLCBsYXll
ckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlv
ciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGxvY2FsUGFpbnRp
bmdJbmZvLmV2ZW50UmVnaW9uKQotICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21l
bnRzV2l0aFBoYXNlKFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLCBsYXllckZyYWdtZW50cywgY29u
dGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNob3VsZENsaXApCkBAIC00
NzY5LDggKzQ3NzQsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFn
CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3Vu
ZFJlY3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJl
bmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5y
ZW5kZXJlcigpLCB0aGlzLCBsb2NhbFBhaW50aW5nSW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5B
Y2Nlc3NGb3JXaWRnZXRzKTsKICAgICAgICAgaWYgKHBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVn
cm91bmQpCiAgICAgICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IGxvY2Fs
UGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHM7Ci0gICAgICAgIGlmIChwaGFzZSA9PSBQ
YWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lv
biA9IGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uOwogICAgICAgICByZW5kZXJlcigpLnBh
aW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlv
bigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zm
c2V0KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKQEAgLTQ4NDMsNiArNDg0
NiwxNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdpb25Gb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbykKK3sKKyAgICBB
U1NFUlQobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb24pOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CisgICAgICAgIFBhaW50SW5mbyBwYWlu
dEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNl
OjpFdmVudFJlZ2lvbiwgeyB9KTsKKyAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uID0gbG9j
YWxQYWludGluZ0luZm8uZXZlbnRSZWdpb247CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFp
bnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSBy
ZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3VicGl4ZWxPZmZzZXQpKTsK
KyAgICB9Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICByZXR1cm4gaGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMjQzMDUxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0
MSw4ICs2NDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIFBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNr
Z3JvdW5kT25seSAgICAgICAgICAgID0gMSA8PCAxMSwKICAgICAgICAgUGFpbnRMYXllclBhaW50
aW5nU2tpcFJvb3RCYWNrZ3JvdW5kICAgICAgICAgICAgPSAxIDw8IDEyLAogICAgICAgICBQYWlu
dExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5nTWFza1BoYXNlICAgICAgICA9IDEgPDwgMTMsCisg
ICAgICAgIFBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRSZWdpb24gICAgICAgICAgICAgICAgID0g
MSA8PCAxNCwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFBhaW50TGF5
ZXJGbGFnPiBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCkgeyBy
ZXR1cm4geyBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSwgIFBh
aW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH07IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRMYXllclBhaW50aW5n
Q29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpIHsgcmV0dXJuIHsgUGFpbnRMYXllclBhaW50aW5n
Q29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2UsIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlIH07IH0KIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIApAQCAtOTg0LDYg
Kzk4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3Qg
TGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RG
b3JSZW5kZXJlcik7CiAgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRz
KGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogcGFpbnRp
bmdSb290Rm9yUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0Zy
YWdtZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlv
blNldDxQYWludExheWVyRmxhZz4pOworICAgIHZvaWQgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mKTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFuc3BhcmVudFBhaW50aW5n
QW5jZXN0b3IoKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlS
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDYgKzc2NCw4IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmEKICAgICBpZiAoIW1fb3du
aW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkgewogICAgICAgICBib29sIGRpZFVwZGF0ZUNv
bnRlbnRzUmVjdCA9IGZhbHNlOwogICAgICAgICB1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCb3hE
ZWNvcmF0aW9ucyhjb250ZW50c0luZm8sIGRpZFVwZGF0ZUNvbnRlbnRzUmVjdCk7CisKKyAgICAg
ICAgdXBkYXRlRXZlbnRSZWdpb24oKTsKICAgICB9IGVsc2UKICAgICAgICAgdXBkYXRlUm9vdExh
eWVyQ29uZmlndXJhdGlvbigpOwogICAgIApAQCAtMTQzMCw2ICsxNDMyLDIyIEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEcmF3c0NvbnQKICAgICAgICAgbV9iYWNrZ3JvdW5kTGF5
ZXItPnNldERyYXdzQ29udGVudChtX2JhY2tncm91bmRMYXllclBhaW50c0ZpeGVkUm9vdEJhY2tn
cm91bmQgPyBoYXNQYWludGVkQ29udGVudCA6IGNvbnRlbnRzSW5mby5wYWludHNCb3hEZWNvcmF0
aW9ucygpKTsKIH0KIAordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9u
KCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQgbnVsbENvbnRleHQobnVsbHB0cik7CisgICAgUmVu
ZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbygmbV9vd25pbmdMYXllciwg
Y29tcG9zaXRlZEJvdW5kcygpLCB7IH0sIExheW91dFNpemUoKSk7CisKKyAgICBSZWdpb24gZXZl
bnRSZWdpb247CisgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uID0gJmV2ZW50UmVnaW9uOwor
CisgICAgYXV0byBwYWludEZsYWdzID0gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJQYWludGluZ0Nv
bXBvc2l0aW5nQWxsUGhhc2VzRmxhZ3MoKSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQ29sbGVj
dGluZ0V2ZW50UmVnaW9uOworICAgIG1fb3duaW5nTGF5ZXIucGFpbnRMYXllckNvbnRlbnRzKG51
bGxDb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOworCisgICAgZXZlbnRSZWdpb24u
dHJhbnNsYXRlKHJvdW5kZWRJbnRTaXplKGNvbnRlbnRPZmZzZXRJbkNvbXBvc2l0aW5nTGF5ZXIo
KSkpOworCisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRFdmVudFJlZ2lvbihXVEZNb3ZlKGV2ZW50
UmVnaW9uKSk7Cit9CisKIC8vIFJldHVybiB0cnVlIGlmIHRoZSBsYXllciBjaGFuZ2VkLgogYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdMYXllcihib29sIG5l
ZWRzQW5jZXN0b3JDbGlwKQogewpAQCAtMjU4NSwxOSArMjYwMyw4IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpwYWludEludG9MYXllcigKIAogICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50
aW5nSW5mbyBwYWludGluZ0luZm8oJm1fb3duaW5nTGF5ZXIsIHBhaW50RGlydHlSZWN0LCBwYWlu
dEJlaGF2aW9yLCAtbV9zdWJwaXhlbE9mZnNldEZyb21SZW5kZXJlcik7CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIFJlZ2lvbiBldmVudFJlZ2lvbjsKLSAgICBwYWludGluZ0luZm8u
ZXZlbnRSZWdpb24gPSAmZXZlbnRSZWdpb247Ci0jZW5kaWYKLQogICAgIG1fb3duaW5nTGF5ZXIu
cGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbiA9
IG51bGxwdHI7Ci0gICAgZXZlbnRSZWdpb24udHJhbnNsYXRlKHJvdW5kZWRJbnRTaXplKGNvbnRl
bnRPZmZzZXRJbkNvbXBvc2l0aW5nTGF5ZXIoKSkpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
RXZlbnRSZWdpb24oV1RGTW92ZShldmVudFJlZ2lvbikpOwotI2VuZGlmCi0KICAgICBpZiAobV9v
d25pbmdMYXllci5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSkKICAgICAgICAgbV9v
d25pbmdMYXllci5wYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWlu
dEZsYWdzIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJsYXlTY3JvbGxiYXJz
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaAkocmV2aXNpb24gMjQzMDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHBhaW50c0NvbnRlbnQoUmVuZGVyTGF5ZXI6OlBhaW50ZWRDb250ZW50UmVx
dWVzdCYpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVEcmF3c0NvbnRlbnQoUGFpbnRlZENvbnRl
bnRzSW5mbyYpOworICAgIHZvaWQgdXBkYXRlRXZlbnRSZWdpb24oKTsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIGNvbXBvc2l0aW5nIGxheWVyIGhhcyBubyB2aXNpYmxlIGNvbnRlbnQu
CiAgICAgYm9vbCBpc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoUGFpbnRlZENvbnRl
bnRzSW5mbyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzA2NykKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTkt
MDMtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIExheWVy
IHdpdGggbm8gYmFja2luZyBzdG9yZSBzaG91bGQgc3RpbGwgaGl0LXRlc3Qgb3ZlciBhIHNjcm9s
bGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUz
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjUyMDc4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgIChXZWJL
aXQ6OmNvbGxlY3REZXNjZW5kYW50Vmlld3NBdFBvaW50KToKKworICAgICAgICBObyBuZWVkIGZv
ciBzcGVjaWFsIFdLVGlsZWRCYWNraW5nVmlldywgdGlsZWQgdmlld3Mgbm93IGhhdmUgY29ycmVj
dCBldmVudCByZWdpb25zLgorCiAyMDE5LTAzLTE4ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQnVtcCBkZXBlbmRlbmNpZXMgdG8g
d3BlLTEuMCBhbmQgd3BlYmFja2VuZC1mZG8tMS4wCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tCShyZXZpc2lvbiAyNDMwNTEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTcyLDExICs3Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
YXllclRyZWVOb2RlPiBSZW0KICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2Vi
TGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6Ci0gICAgICAgIHJl
dHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2lu
Z0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNr
aW5nTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tUaWxlZEJhY2tp
bmdWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtb
V0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1v
dGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaAkocmV2aXNpb24gMjQz
MDUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw2IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIEBpbnRlcmZhY2UgV0tDb21wb3NpdGluZ1ZpZXcgOiBVSVZpZXcKIEBl
bmQKIAotQGludGVyZmFjZSBXS1RpbGVkQmFja2luZ1ZpZXcgOiBXS0NvbXBvc2l0aW5nVmlldwot
QGVuZAotCiBAaW50ZXJmYWNlIFdLVHJhbnNmb3JtVmlldyA6IFdLQ29tcG9zaXRpbmdWaWV3CiBA
ZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQkocmV2aXNp
b24gMjQzMDUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBA
QCBzdGF0aWMgdm9pZCBjb2xsZWN0RGVzY2VuZGFudFZpZXdzQXRQb2luCiAgICAgICAgIGF1dG8g
aGFuZGxlc0V2ZW50ID0gWyZdIHsKICAgICAgICAgICAgIGlmICghW3ZpZXcgcG9pbnRJbnNpZGU6
c3Vidmlld1BvaW50IHdpdGhFdmVudDpldmVudF0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLVGlsZWRCYWNraW5n
VmlldyBjbGFzc11dKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
aWYgKCFbdmlldyBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nVmlldyBjbGFzc11dKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYXV0byogbm9kZSA9IFJlbW90
ZUxheWVyVHJlZU5vZGU6OmZvckNBTGF5ZXIodmlldy5sYXllcik7CkBAIC0xMTUsOSArMTEzLDYg
QEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBX
S1RpbGVkQmFja2luZ1ZpZXcKLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIFdLVHJhbnNmb3JtVmll
dwogCiArIChDbGFzcylsYXllckNsYXNzCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMwNTEpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAx
OS0wMy0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5
ZXIgd2l0aCBubyBiYWNraW5nIHN0b3JlIHNob3VsZCBzdGlsbCBoaXQtdGVzdCBvdmVyIGEgc2Ny
b2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2NTIwNzg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVvcmdhbml6ZSB0aGUgdGVzdHMgYSBi
aXQgYW5kIGFkZCBzb21lIG5ldyBvbmVzLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9z
L292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0yLmh0bWw6CisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92
ZXJsYXAtMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZs
b3ctc2Nyb2xsLW92ZXJsYXAtNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5odG1sOgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3Zlcmxh
cC5qczogQWRkZWQuCisgICAgICAgIChzbGVlcCk6CisgICAgICAgIChhc3luYy5ydW5UZXN0KToK
KyAgICAgICAgKGxvZ1Njcm9sbCk6CisgICAgICAgIChvdXRwdXRDYXNlKToKKwogMjAxOS0wMy0x
NiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcg
TWVkaWFDYXBhYmlsaXRpZXNFeHRlbnNpb25zRW5hYmxlZCBzZXR0aW5nCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDMwNTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiBUZXN0IHRoYXQgc2Ny
b2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2aWFsIG92ZXJsYXAgYXJlIGNvcnJlY3RseSB0YXJn
ZXRlZC4KIAotY2FzZSAxOiAKLWNhc2UgMjogU2Nyb2xsYWJsZSAyIAorY2FzZSAxOiBTY3JvbGxh
YmxlIDEgCitjYXNlIDI6IAogY2FzZSAzOiBTY3JvbGxhYmxlIDMgCiBjYXNlIDQ6IFNjcm9sbGFi
bGUgNCAKLWNhc2UgNTogU2Nyb2xsYWJsZSA1IAotY2FzZSA2OiAKK2Nhc2UgNTogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJm
bG93LXNjcm9sbC1vdmVybGFwLTIuaHRtbAkocmV2aXNpb24gMjQzMDUxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTQgQEAgYm9keSB7CiAgICAgaGVpZ2h0OiAxMDBweDsK
ICAgICBiYWNrZ3JvdW5kOiByZWQ7CiB9Cisub3ZlcmxhcHBpbmctZW1wdHkgeworICAgIHBvc2l0
aW9uOmFic29sdXRlOworICAgIGxlZnQ6IDI1cHg7CisgICAgdG9wOiAyNXB4OworICAgIHdpZHRo
OiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQ6IGJsdWU7Cit9CiAu
Y2xpcCB7CiAgICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICAgd2lkdGg6IDEwMHB4OwpAQCAtNDks
ODUgKzU3LDcgQEAgYm9keSB7CiB9CiA8L3N0eWxlPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0QXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKHRydWUpOwot
fQotCi1mdW5jdGlvbiBzbGVlcChkZWxheSkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUpID0+IHsgc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSk7IH0pOwotfQotCi1hc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkgewotICAgIGZvciAoY29uc3Qgc2Nyb2xsYWJsZSBvZiBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCcub3ZlcmZsb3dzY3JvbGwnKSkgewotICAgICAgICBzY3JvbGxh
YmxlLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IGxvZ1Njcm9sbChlLnRhcmdldCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgbGV0IGkgPSAwOwotICAgICAgICBmb3IgKGNvbnN0IHNjcm9sbGNvbnRlbnQgb2YgZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnLnNjcm9sbGNvbnRlbnQnKSkKLSAgICAgICAgICAgIHNjcm9s
bGNvbnRlbnQuaW5uZXJUZXh0ID0gIlNjcm9sbGFibGUgIiArICsraTsKLSAgICB9Ci0gICAgewot
ICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAgIGZvciAoY29uc3Qgb3ZlcmxhcHBpbmcgb2YgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm92ZXJsYXBwaW5nJykpCi0gICAgICAgICAgICBvdmVy
bGFwcGluZy5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIk92ZXJsYXBwaW5n
ICIgKyArK2kpLCBvdmVybGFwcGluZy5maXJzdENoaWxkKTsKLSAgICB9Ci0KLQotICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLmNhc2UnKSkKLSAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
LQotICAgIHsKLSAgICAgICAgbGV0IGkgPSAwOwotICAgICAgICBmb3IgKGNvbnN0IHRlc3RjYXNl
IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXNlJykpIHsKLSAgICAgICAgICAgICsr
aTsKLSAgICAgICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGVzdGNhc2UucXVlcnlT
ZWxlY3RvcignLnRhcmdldCcpOwotICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRhcmdldC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSAocmVjdC5s
ZWZ0ICsgcmVjdC5yaWdodCkgLyAyOwotICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9IChyZWN0
LnRvcCArIHJlY3QuYm90dG9tKSAvIDI7Ci0gICAgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdG
cm9tUG9pbnRUb1BvaW50KGNlbnRlclgsIGNlbnRlclksIGNlbnRlclgsIGNlbnRlclkgLSAzMCk7
Ci0gICAgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBvaW50KGNlbnRlclgsIGNlbnRlclkgLSAzMCk7
Ci0gICAgICAgICAgICBhd2FpdCBzbGVlcCg1MDApOwotCi0gICAgICAgICAgICB0ZXN0Y2FzZS5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICAgICAgb3V0cHV0Q2FzZShpKTsKLSAgICAg
ICAgfQotICAgfQotCi0gICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuY2FzZScpKQotICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnOwotCi0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWNvbnN0IHNjcm9sbGVk
RWxlbWVudHMgPSBuZXcgU2V0KCk7Ci0KLWZ1bmN0aW9uIGxvZ1Njcm9sbChlbGVtZW50KSB7Ci0g
ICAgaWYgKHNjcm9sbGVkRWxlbWVudHMuaGFzKGVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0g
ICAgc2Nyb2xsZWRFbGVtZW50cy5hZGQoZWxlbWVudCk7Ci19Ci0KLWZ1bmN0aW9uIG91dHB1dENh
c2UoaSkgewotICAgIGxvZy5pbm5lclRleHQgKz0gImNhc2UgIiArIGkgKyAiOiAiOwotICAgIGZv
ciAoY29uc3Qgc2Nyb2xsZWQgb2Ygc2Nyb2xsZWRFbGVtZW50cykKLSAgICAgICAgbG9nLmlubmVy
VGV4dCArPSBzY3JvbGxlZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJzY3JvbGxjb250ZW50Iilb
MF0uaW5uZXJUZXh0ICsgIiAiOwotICAgIGxvZy5pbm5lclRleHQgKz0gIlxuIjsKLSAgICBzY3Jv
bGxlZEVsZW1lbnRzLmNsZWFyKCk7Ci19Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CkBAIC0xMzcsOCArNjcsNyBAQCBUZXN0IHRoYXQg
c2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dz
Y3JvbGwgdGFyZ2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+
CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiA4
MHB4Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBw
eDsgdG9wOiAtMzBweCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxl
PSJ2aXNpYmlsaXR5OmhpZGRlbiI+CiAgICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTQ2LDcgKzc1
LDcgQEAgVGVzdCB0aGF0IHNjcm9sbGFibGUgYXJlYXMgd2l0aCBub24tdHJpdgogICAgIDxkaXYg
Y2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+CiAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9s
bGNvbnRlbnQiPjwvZGl2PgogICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5n
IiBzdHlsZT0iYm94LXNoYWRvdzogMHB4IDBweCAzMnB4IDMycHggYmx1ZTsgbGVmdDogNjBweDsg
dG9wOiA2MHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZy1lbXB0eSIgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQiPgogICAgIDwvZGl2PgogPC9kaXY+CiAKQEAgLTE1
NCwxNiArODMsNyBAQCBUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2CiAg
ICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KICAgICAgICAgPGRpdiBjbGFz
cz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ib3Zl
cmxhcHBpbmciIHN0eWxlPSJwb2ludGVyLWV2ZW50czpub25lIj4KLSAgICA8L2Rpdj4KLTwvZGl2
PgotCi08ZGl2IGNsYXNzPSJjYXNlIj4KLSAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0
YXJnZXQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KLSAgICA8
L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9InRvcDotNjBweCI+Ci0g
ICAgVGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dAor
ICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0iYm94LXNoYWRvdzogMHB4IDBweCAz
MnB4IDMycHggYmx1ZTsgbGVmdDogNjBweDsgdG9wOiA2MHB4Ij4KICAgICA8L2Rpdj4KIDwvZGl2
PgogCkBAIC0xNzEsOCArOTEsNyBAQCBUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5v
bi10cml2CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KICAgICAgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBj
bGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJ0b3A6LTYwcHg7IHBhZGRpbmctbGVmdDo0MHB4Ij4K
LSAgICBUZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJwb2ludGVyLWV2ZW50czpub25l
Ij4KICAgICA8L2Rpdj4KIDwvZGl2PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
LTMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0zLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUgQEAKK1Rlc3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggdGV4
dCBvdmVybGFwIGFyZSBjb3JyZWN0bHkgdGFyZ2V0ZWQuCisKK2Nhc2UgMTogU2Nyb2xsYWJsZSAx
IAorY2FzZSAyOiBTY3JvbGxhYmxlIDIgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZs
b3ctc2Nyb2xsLW92ZXJsYXAtMy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8c3R5bGU+Citi
b2R5IHsKKyAgICB0b3VjaC1hY3Rpb246IG5vbmU7Cit9CisuY2FzZSB7CisgICAgd2lkdGg6IDIw
MHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5zY3JvbGxjb250ZW50IHsKKyAgICB3aWR0aDogNTAw
cHg7CisgICAgaGVpZ2h0OiA1MDBweDsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKK30KKworLm92
ZXJmbG93c2Nyb2xsIHsKKyAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIGhlaWdodDogMTAwcHg7
CisgICAgd2lkdGg6IDEwMHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3JkZXI6
IDJweCBzb2xpZCBibGFjazsKK30KKy5vdmVybGFwcGluZyB7CisgICAgcG9zaXRpb246YWJzb2x1
dGU7CisgICAgbGVmdDogMjVweDsKKyAgICB0b3A6IDI1cHg7CisgICAgd2lkdGg6IDEwMHB4Owor
ICAgIGhlaWdodDogMTAwcHg7CisgICAgYmFja2dyb3VuZDogcmVkOworfQorLmNsaXAgeworICAg
IHBvc2l0aW9uOmFic29sdXRlOworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4
OworICAgIG92ZXJmbG93OmhpZGRlbjsKK30KKy5sYXJnZSB7CisgICAgd2lkdGg6IDMwMDBweDsK
KyAgICBoZWlnaHQ6IDE1MHB4OworfQorI2xvZyB7CisgICAgcG9zaXRpb246cmVsYXRpdmU7Cisg
ICAgd2hpdGUtc3BhY2U6IHByZTsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVh
cyB3aXRoIHRleHQgb3ZlcmxhcCBhcmUgY29ycmVjdGx5IHRhcmdldGVkLgorPC9wPgorCis8ZGl2
IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9InRvcDotNjBweCI+CisgICAgVGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dAorICAgIDwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93
c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0idG9wOi02
MHB4OyBwYWRkaW5nLWxlZnQ6NDBweCI+CisgICAgVGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dAorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9
bG9nPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtNC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1v
dmVybGFwLTQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdp
dGggb3ZlcmZsb3dpbmcgb3ZlcmxhcCBhcmUgY29ycmVjdGx5IHRhcmdldGVkLgorCitjYXNlIDE6
IAorY2FzZSAyOiAKK2Nhc2UgMzogCitjYXNlIDQ6IAorY2FzZSA1OiAKK2Nhc2UgNjogU2Nyb2xs
YWJsZSA2IAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ct
c2Nyb2xsLW92ZXJsYXAtNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC00Lmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
LTQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxzdHlsZT4KK2JvZHkgeworICAgIHRvdWNo
LWFjdGlvbjogbm9uZTsKK30KKy5jYXNlIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworfQorLnNjcm9sbGNvbnRlbnQgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBoZWlnaHQ6
IDUwMHB4OworICAgIGJhY2tncm91bmQ6IGdyZWVuOworfQorCisub3ZlcmZsb3dzY3JvbGwgewor
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB3aWR0aDogMTAw
cHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNr
OworfQorLm92ZXJsYXBwaW5nIHsKKyAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICBsZWZ0OiAy
NXB4OworICAgIHRvcDogMjVweDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9CisuY2xpcCB7CisgICAgcG9zaXRpb246YWJzb2x1
dGU7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgb3ZlcmZsb3c6
aGlkZGVuOworfQorLmxhcmdlIHsKKyAgICB3aWR0aDogMzAwMHB4OworICAgIGhlaWdodDogMTUw
cHg7Cit9CisjbG9nIHsKKyAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKKyAgICB3aGl0ZS1zcGFjZTog
cHJlOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMt
Z2VzdHVyZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyZmxv
dy1zY3JvbGwtb3ZlcmxhcC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggb3ZlcmZsb3dp
bmcgb3ZlcmxhcCBhcmUgY29ycmVjdGx5IHRhcmdldGVkLgorPC9wPgorCis8ZGl2IGNsYXNzPSJj
YXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IDgwcHgiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IC00MHB4OyB0b3A6IC0zMHB4Ij48L2Rpdj4KKyAg
ICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJv
dmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50
Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9
ImxlZnQ6IDgwcHg7IHotaW5kZXg6MCI+CisgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5n
IiBzdHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTMwcHgiPjwvZGl2PgorICAgIDwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xs
IHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAg
IDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogODBweDsg
dG9wOiA5MHB4OyB6LWluZGV4OjAiPgorICAgICAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIg
c3R5bGU9ImxlZnQ6IC00MHB4OyB0b3A6IC0xMjBweCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBjbGFzcz0iY2FzZSI+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwg
dGFyZ2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiA4MHB4OyB0
b3A6IDkwcHg7IHotaW5kZXg6MCI+CisgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBz
dHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTEyMHB4OyB6LWluZGV4Oi0xIj48L2Rpdj4KKyAgICA8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVy
Zmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9Imxl
ZnQ6IDgwcHg7IHRvcDogOTBweDsgei1pbmRleDowIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ib3Zl
cmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBweDsgdG9wOiAtMTIwcHg7IHotaW5kZXg6MSI+PC9k
aXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+CisgICAgPGRpdiBj
bGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xs
Y29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmci
IHN0eWxlPSJsZWZ0OiA4MHB4OyB0b3A6IDYwcHg7IHotaW5kZXg6MCI+CisgICAgICAgIDxkaXYg
Y2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTEyMHB4Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPWxvZz48L2Rpdj4KKworPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNj
cm9sbC1vdmVybGFwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmh0bWwJKHJldmlzaW9uIDI0MzA1MSkKKysr
IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4NSArNDksNyBAQCBib2R5IHsKIH0KIDwvc3R5bGU+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY0ZyYW1lU2Nyb2xs
aW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNPdmVyZmxv
d1Njcm9sbGluZ0VuYWJsZWQodHJ1ZSk7Ci19Ci0KLWZ1bmN0aW9uIHNsZWVwKGRlbGF5KQotewot
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyBzZXRUaW1lb3V0KHJlc29sdmUs
IGRlbGF5KTsgfSk7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgZm9yIChj
b25zdCBzY3JvbGxhYmxlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vdmVyZmxvd3Nj
cm9sbCcpKSB7Ci0gICAgICAgIHNjcm9sbGFibGUuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywg
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgbG9nU2Nyb2xsKGUudGFyZ2V0KTsKLSAgICAgICAg
fSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAgIGZvciAoY29u
c3Qgc2Nyb2xsY29udGVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2Nyb2xsY29u
dGVudCcpKQotICAgICAgICAgICAgc2Nyb2xsY29udGVudC5pbm5lclRleHQgPSAiU2Nyb2xsYWJs
ZSAiICsgKytpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIGxldCBpID0gMDsKLSAgICAgICAgZm9y
IChjb25zdCBvdmVybGFwcGluZyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub3Zlcmxh
cHBpbmcnKSkKLSAgICAgICAgICAgIG92ZXJsYXBwaW5nLmlubmVyVGV4dCA9ICJPdmVybGFwcGlu
ZyAiICsgKytpOwotICAgIH0KLQotCi0gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVz
dFJ1bm5lci5ydW5VSVNjcmlwdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChjb25zdCB0
ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKQotICAgICAgICB0
ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotCi0gICAgewotICAgICAgICBsZXQgaSA9
IDA7Ci0gICAgICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLmNhc2UnKSkgewotICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgdGVzdGNhc2Uu
c3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjb25zdCB0YXJnZXQgPSB0ZXN0Y2FzZS5xdWVyeVNlbGVjdG9yKCcudGFyZ2V0Jyk7Ci0gICAg
ICAgICAgICBjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAg
ICAgICAgICAgY29uc3QgY2VudGVyWCA9IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDI7Ci0g
ICAgICAgICAgICBjb25zdCBjZW50ZXJZID0gKHJlY3QudG9wICsgcmVjdC5ib3R0b20pIC8gMjsK
LSAgICAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoY2VudGVyWCwg
Y2VudGVyWSwgY2VudGVyWCwgY2VudGVyWSAtIDMwKTsKLSAgICAgICAgICAgIGF3YWl0IGxpZnRV
cEF0UG9pbnQoY2VudGVyWCwgY2VudGVyWSAtIDMwKTsKLSAgICAgICAgICAgIGF3YWl0IHNsZWVw
KDUwMCk7Ci0KLSAgICAgICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0g
ICAgICAgICAgICBvdXRwdXRDYXNlKGkpOwotICAgICAgICB9Ci0gICB9Ci0KLSAgICBmb3IgKGNv
bnN0IHRlc3RjYXNlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXNlJykpCi0gICAg
ICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0KLSAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLQotY29uc3Qgc2Nyb2xsZWRFbGVtZW50cyA9IG5ldyBTZXQoKTsKLQot
ZnVuY3Rpb24gbG9nU2Nyb2xsKGVsZW1lbnQpIHsKLSAgICBpZiAoc2Nyb2xsZWRFbGVtZW50cy5o
YXMoZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzY3JvbGxlZEVsZW1lbnRzLmFkZChl
bGVtZW50KTsKLX0KLQotZnVuY3Rpb24gb3V0cHV0Q2FzZShpKSB7Ci0gICAgbG9nLmlubmVyVGV4
dCArPSAiY2FzZSAiICsgaSArICI6ICI7Ci0gICAgZm9yIChjb25zdCBzY3JvbGxlZCBvZiBzY3Jv
bGxlZEVsZW1lbnRzKQotICAgICAgICBsb2cuaW5uZXJUZXh0ICs9IHNjcm9sbGVkLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoInNjcm9sbGNvbnRlbnQiKVswXS5pbm5lclRleHQgKyAiICI7Ci0gICAg
bG9nLmlubmVyVGV4dCArPSAiXG4iOwotICAgIHNjcm9sbGVkRWxlbWVudHMuY2xlYXIoKTsKLX0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3Zl
cmxhcC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8
cD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyZmxvdy1z
Y3JvbGwtb3ZlcmxhcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9yZXNvdXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuanMJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJmbG93LXNjcm9sbC1vdmVy
bGFwLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jRnJhbWVTY3Jv
bGxpbmdFbmFibGVkKHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBc3luY092ZXJm
bG93U2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gc2xlZXAoZGVsYXkpCit7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHNldFRpbWVvdXQocmVzb2x2
ZSwgZGVsYXkpOyB9KTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBmb3Ig
KGNvbnN0IHNjcm9sbGFibGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm92ZXJmbG93
c2Nyb2xsJykpIHsKKyAgICAgICAgc2Nyb2xsYWJsZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwn
LCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBsb2dTY3JvbGwoZS50YXJnZXQpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCBpID0gMDsKKyAgICAgICAgZm9yIChj
b25zdCBzY3JvbGxjb250ZW50IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zY3JvbGxj
b250ZW50JykpCisgICAgICAgICAgICBzY3JvbGxjb250ZW50LmlubmVyVGV4dCA9ICJTY3JvbGxh
YmxlICIgKyArK2k7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IGkgPSAwOworICAgICAgICBm
b3IgKGNvbnN0IG92ZXJsYXBwaW5nIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vdmVy
bGFwcGluZycpKQorICAgICAgICAgICAgb3ZlcmxhcHBpbmcuaW5zZXJ0QmVmb3JlKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJPdmVybGFwcGluZyAiICsgKytpKSwgb3ZlcmxhcHBpbmcuZmlyc3RD
aGlsZCk7CisgICAgfQorCisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVu
bmVyLnJ1blVJU2NyaXB0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0IHRlc3Rj
YXNlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXNlJykpCisgICAgICAgIHRlc3Rj
YXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKyAgICB7CisgICAgICAgIGxldCBpID0gMDsK
KyAgICAgICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuY2FzZScpKSB7CisgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB0ZXN0Y2FzZS5zdHls
ZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7CisKKyAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9
IHRlc3RjYXNlLnF1ZXJ5U2VsZWN0b3IoJy50YXJnZXQnKTsKKyAgICAgICAgICAgIGNvbnN0IHJl
Y3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICBjb25zdCBj
ZW50ZXJYID0gKHJlY3QubGVmdCArIHJlY3QucmlnaHQpIC8gMjsKKyAgICAgICAgICAgIGNvbnN0
IGNlbnRlclkgPSAocmVjdC50b3AgKyByZWN0LmJvdHRvbSkgLyAyOworICAgICAgICAgICAgYXdh
aXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludChjZW50ZXJYLCBjZW50ZXJZLCBjZW50ZXJY
LCBjZW50ZXJZIC0gMzApOworICAgICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2ludChjZW50ZXJY
LCBjZW50ZXJZIC0gMzApOworICAgICAgICAgICAgYXdhaXQgc2xlZXAoNTAwKTsKKworICAgICAg
ICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgICAgIG91dHB1
dENhc2UoaSk7CisgICAgICAgIH0KKyAgIH0KKworICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2Yg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhc2UnKSkKKyAgICAgICAgdGVzdGNhc2Uuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
Citjb25zdCBzY3JvbGxlZEVsZW1lbnRzID0gbmV3IFNldCgpOworCitmdW5jdGlvbiBsb2dTY3Jv
bGwoZWxlbWVudCkgeworICAgIGlmIChzY3JvbGxlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHNjcm9sbGVkRWxlbWVudHMuYWRkKGVsZW1lbnQpOworfQorCitm
dW5jdGlvbiBvdXRwdXRDYXNlKGkpIHsKKyAgICBsb2cuaW5uZXJUZXh0ICs9ICJjYXNlICIgKyBp
ICsgIjogIjsKKyAgICBmb3IgKGNvbnN0IHNjcm9sbGVkIG9mIHNjcm9sbGVkRWxlbWVudHMpCisg
ICAgICAgIGxvZy5pbm5lclRleHQgKz0gc2Nyb2xsZWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
c2Nyb2xsY29udGVudCIpWzBdLmlubmVyVGV4dCArICIgIjsKKyAgICBsb2cuaW5uZXJUZXh0ICs9
ICJcbiI7CisgICAgc2Nyb2xsZWRFbGVtZW50cy5jbGVhcigpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365138</attachid>
            <date>2019-03-19 01:46:16 -0700</date>
            <delta_ts>2019-03-19 04:07:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>event-region-update-composite-4.patch</filename>
            <type>text/plain</type>
            <size>35921</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTAzLTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBMYXllciB3aXRoIG5vIGJhY2tp
bmcgc3RvcmUgc2hvdWxkIHN0aWxsIGhpdC10ZXN0IG92ZXIgYSBzY3JvbGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Mzc4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODY1MjA3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwt
b3ZlcmxhcC0zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxv
dy1zY3JvbGwtb3ZlcmxhcC00Lmh0bWwKKworICAgICAgICBNb3ZlIGNvbGxlY3RpbmcgZXZlbnQg
cmVnaW9uIGZyb20gcGFpbnQgdG8gY29tcG9zaXRpbmcgdXBkYXRlIHRpbWUuCisgICAgICAgIFRo
aXMgc29sdmVzIGEgbnVtYmVyIG9mIHByb2JsZW1zIGluY2x1ZGluZyByZWdpb25zIGZvciBub24t
cGFpbnRpbmcgbGF5ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorCisgICAgICAgIFVzZSB0aGUgZXhp
c3RpbmcgdmlzaWJsZVRvSGl0VGVzdGluZygpIGhlbHBlci4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKToKKworICAgICAgICBVc2UgZmxhZyBmb3IgZXZlbnQgcmVnaW9uIGNvbGxl
Y3RpbmcsIGRvbid0IHBhaW50IGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorCisgICAgICAgIFdlIGNhbiBiYWlsIG91dCBpbW1lZGlhdGVseSBp
ZiB0aGVyZSBpcyBubyBvdmVyZmxvdy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdpb25Gb3JGcmFnbWVudHMpOgorCisg
ICAgICAgIE1vdmUgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbi4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1
cmF0aW9uKToKKworICAgICAgICBVcGRhdGUgZXZlbnQgcmVnaW9uIG9uIGJhY2tpbmcgY29uZmln
dXJhdGlvbiB1cGRhdGUuIFRoaXMgaXMgY2FsbGVkIGFmdGVyIGFueXRoaW5nIGludGVyZXN0aW5n
IGNoYW5nZXMgb24gYSBzdWJsYXllci4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmg6CisKIDIwMTktMDMtMTggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9m
ZiBvYmplY3RzIGZvciBTVkdTdHJpbmdMaXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyNDMxMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1Myw3ICs0NTMsNiBAQCBwdWJsaWM6CiAgICAgV2luZFJ1bGUgc2hhcGVMYXll
cldpbmRSdWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFNoYXBlTGF5ZXJXaW5kUnVs
ZShXaW5kUnVsZSk7CiAKLSAgICAvLyBOb24tbnVsbCBpZiB0aGUgZXZlbnQgc2Vuc2l0aXZlIHJl
Z2lvbiBvZiB0aGUgbGF5ZXIgZGlmZmVycyBmcm9tIHRoZSBsYXllciBib3VuZHMuCiAgICAgY29u
c3QgUmVnaW9uJiBldmVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRSZWdpb247IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RXZlbnRSZWdpb24oUmVnaW9uJiYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDI0MzEzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50
SW5mbyYKICAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikgewog
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGlubGluZXMsIGxpbmVib3hlcywgU1ZHIHRvby4KICAg
ICAgICAgLy8gRklYTUU6IFRyYW5zZm9ybXM/Ci0gICAgICAgIGlmIChzdHlsZSgpLnBvaW50ZXJF
dmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25lKQorICAgICAgICBpZiAodmlzaWJsZVRvSGl0
VGVzdGluZygpKQogICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uLT51bml0ZShlbmNs
b3NpbmdJbnRSZWN0KExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpKTsKIAogICAgICAg
ICAvLyBObyBuZWVkIHRvIGNoZWNrIGRlc2NlbmRhbnRzIGlmIHdlIGRvbid0IGhhdmUgb3ZlcmZs
b3cuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlz
aW9uIDI0MzEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyNDMsMTYgKzQyNDMsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckNvbnRlbnRzKEdyYQogICAgIGJvb2wgaXNQYWludGluZ0NvbXBvc2l0ZWRGb3Jl
Z3JvdW5kID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGlu
Z0ZvcmVncm91bmRQaGFzZSk7CiAgICAgYm9vbCBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91
bmQgPSBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFj
a2dyb3VuZFBoYXNlKTsKICAgICBib29sIGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzID0gcGFp
bnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKTsKKyAg
ICBib29sIGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uID0gcGFpbnRGbGFncy5jb250YWlucyhQYWlu
dExheWVyQ29sbGVjdGluZ0V2ZW50UmVnaW9uKTsKICAgICAvLyBPdXRsaW5lIGFsd2F5cyBuZWVk
cyB0byBiZSBwYWludGVkIGV2ZW4gaWYgd2UgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIEFsc28s
CiAgICAgLy8gdGhlIG91dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUgYmFja2dyb3VuZCBwaGFzZSBk
dXJpbmcgY29tcG9zaXRlZCBzY3JvbGxpbmcuCiAgICAgLy8gSWYgaXQgd2VyZSBwYWludGVkIGlu
IHRoZSBmb3JlZ3JvdW5kIHBoYXNlLCBpdCB3b3VsZCBtb3ZlIHdpdGggdGhlIHNjcm9sbGVkCiAg
ICAgLy8gY29udGVudC4gV2hlbiBub3QgY29tcG9zaXRlZCBzY3JvbGxpbmcsIHRoZSBvdXRsaW5l
IGlzIHBhaW50ZWQgaW4gdGhlCiAgICAgLy8gZm9yZWdyb3VuZCBwaGFzZS4gU2luY2Ugc2Nyb2xs
ZWQgY29udGVudHMgYXJlIG1vdmVkIGJ5IHJlcGFpbnRpbmcgaW4gdGhpcwogICAgIC8vIGNhc2Us
IHRoZSBvdXRsaW5lIHdvbid0IGdldCAnZHJhZ2dlZCBhbG9uZycuCi0gICAgYm9vbCBzaG91bGRQ
YWludE91dGxpbmUgPSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMKKyAgICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5
ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRS
ZWdpb24KICAgICAgICAgJiYgKChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50
aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpCiAgICAgICAgIHx8ICghaXNQYWludGluZ1Njcm9sbGlu
Z0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSk7Ci0gICAgYm9vbCBz
aG91bGRQYWludENvbnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5n
TGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBib29sIHNob3VsZFBh
aW50Q29udGVudCA9IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAm
JiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lv
bjsKIAogICAgIGlmIChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFj
a2dyb3VuZE9ubHkgJiYgIXJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgIXJlbmRlcmVyKCku
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CkBAIC00MzIzLDcg
KzQzMjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAg
ICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9u
KTsKIAogICAgICAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3Q7Ci0gICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hv
dWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgeworICAgICAg
ICBpZiAoc2hvdWxkUGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50
aW5nT3ZlcmxheVNjcm9sbGJhcnMgfHwgaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24pIHsKICAgICAg
ICAgICAgIC8vIENvbGxlY3QgdGhlIGZyYWdtZW50cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNs
aXAgcmVjdGFuZ2xlcyBhbmQgcGFpbnQgb2Zmc2V0cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwg
YXMgd2VsbCBhcyB3aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBlYWNoCiAgICAgICAgICAg
ICAvLyBmcmFnbWVudCBzaG91bGQgcGFpbnQuIElmIHRoZSBwYXJlbnQncyBmaWx0ZXIgZGljdGF0
ZXMgZnVsbCByZXBhaW50IHRvIGVuc3VyZSBwcm9wZXIgZmlsdGVyIGVmZmVjdCwKICAgICAgICAg
ICAgIC8vIHVzZSB0aGUgb3ZlcmZsb3cgY2xpcCBhcyBkaXJ0eSByZWN0LCBpbnN0ZWFkIG9mIG5v
IGNsaXBwaW5nLiBJdCBtYWludGFpbnMgcHJvcGVyIGNsaXBwaW5nIGZvciBvdmVyZmxvdzo6c2Ny
b2xsLgpAQCAtNDM1Nyw2ICs0MzU4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGlzQ29s
bGVjdGluZ0V2ZW50UmVnaW9uKQorICAgICAgICAgICAgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8p
OworCiAgICAgICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCiAgICAgICAgICAgICBwYWludE91
dGxpbmVGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsK
IApAQCAtNDQ2NCw2ICs0NDY4LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KExheWVy
TGlzdCBsYQogICAgIGlmICghaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJDb2xs
ZWN0aW5nRXZlbnRSZWdpb24pICYmIHJlbmRlckJveCgpICYmICFyZW5kZXJCb3goKS0+aGFzUmVu
ZGVyT3ZlcmZsb3coKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCp0aGlzKTsKICNl
bmRpZgpAQCAtNDc0Niw4ICs0NzUzLDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3Jv
dW5kRm9yRnJhZwogICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2Uo
UGFpbnRQaGFzZTo6RmxvYXQsIGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgbG9jYWxQYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwog
ICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZTo6
Rm9yZWdyb3VuZCwgbGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBs
b2NhbFBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAg
IHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlOjpDaGlsZE91
dGxpbmVzLCBsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2Fs
UGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKLSAgICAgICAgaWYg
KGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uKQotICAgICAgICAgICAgcGFpbnRGb3JlZ3Jv
dW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLCBsYXllckZy
YWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlvciwg
c3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNob3Vs
ZENsaXApCkBAIC00NzY5LDggKzQ3NzQsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVn
cm91bmRGb3JGcmFnCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21l
bnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBh
aW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGluZ0luZm8u
cm9vdExheWVyLT5yZW5kZXJlcigpLCB0aGlzLCBsb2NhbFBhaW50aW5nSW5mby5yZXF1aXJlU2Vj
dXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzKTsKICAgICAgICAgaWYgKHBoYXNlID09IFBhaW50
UGhhc2U6OkZvcmVncm91bmQpCiAgICAgICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1
ZXN0cyA9IGxvY2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHM7Ci0gICAgICAgIGlm
IChwaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgICAgIHBhaW50SW5m
by5ldmVudFJlZ2lvbiA9IGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uOwogICAgICAgICBy
ZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJv
dW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZv
LnN1YnBpeGVsT2Zmc2V0KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKQEAg
LTQ4NDMsNiArNDg0NiwxNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJv
bHNGCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdpb25Gb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5m
bykKK3sKKyAgICBBU1NFUlQobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb24pOworCisgICAg
Zm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CisgICAgICAgIFBh
aW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgp
LCBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiwgeyB9KTsKKyAgICAgICAgcGFpbnRJbmZvLmV2ZW50
UmVnaW9uID0gbG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb247CisgICAgICAgIHJlbmRlcmVy
KCkucGFpbnQocGFpbnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxv
Y2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3VicGl4
ZWxPZmZzZXQpKTsKKyAgICB9Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBy
ZXR1cm4gaGl0VGVzdChyZXF1ZXN0LCByZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMjQz
MTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0MSw4ICs2NDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIFBhaW50TGF5ZXJQYWlu
dGluZ1Jvb3RCYWNrZ3JvdW5kT25seSAgICAgICAgICAgID0gMSA8PCAxMSwKICAgICAgICAgUGFp
bnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kICAgICAgICAgICAgPSAxIDw8IDEyLAog
ICAgICAgICBQYWludExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5nTWFza1BoYXNlICAgICAgICA9
IDEgPDwgMTMsCisgICAgICAgIFBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRSZWdpb24gICAgICAg
ICAgICAgICAgID0gMSA8PCAxNCwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9u
U2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNl
c0ZsYWdzKCkgeyByZXR1cm4geyBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91
bmRQaGFzZSwgIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH07
IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRM
YXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpIHsgcmV0dXJuIHsgUGFpbnRM
YXllclBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2UsIFBhaW50TGF5ZXJQYWludGlu
Z0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH07IH0KIAogICAgIGVudW0gY2xhc3MgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsK
IApAQCAtOTg0LDYgKzk4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludE1hc2tGb3JGcmFn
bWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBw
YWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CiAgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNr
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9i
amVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1l
ZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4pOworICAgIHZvaWQgY29sbGVjdEV2ZW50
UmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mKTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFuc3Bh
cmVudFBhaW50aW5nQW5jZXN0b3IoKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNDMxMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY1
LDYgKzc2NSw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmEKICAg
ICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkgewogICAgICAgICBib29s
IGRpZFVwZGF0ZUNvbnRlbnRzUmVjdCA9IGZhbHNlOwogICAgICAgICB1cGRhdGVEaXJlY3RseUNv
bXBvc2l0ZWRCb3hEZWNvcmF0aW9ucyhjb250ZW50c0luZm8sIGRpZFVwZGF0ZUNvbnRlbnRzUmVj
dCk7CisKKyAgICAgICAgdXBkYXRlRXZlbnRSZWdpb24oKTsKICAgICB9IGVsc2UKICAgICAgICAg
dXBkYXRlUm9vdExheWVyQ29uZmlndXJhdGlvbigpOwogICAgIApAQCAtMTQzMSw2ICsxNDMzLDI3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEcmF3c0NvbnQKICAgICAgICAgbV9i
YWNrZ3JvdW5kTGF5ZXItPnNldERyYXdzQ29udGVudChtX2JhY2tncm91bmRMYXllclBhaW50c0Zp
eGVkUm9vdEJhY2tncm91bmQgPyBoYXNQYWludGVkQ29udGVudCA6IGNvbnRlbnRzSW5mby5wYWlu
dHNCb3hEZWNvcmF0aW9ucygpKTsKIH0KIAordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUV2ZW50UmVnaW9uKCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChwYWlu
dHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBo
aWNzQ29udGV4dCBudWxsQ29udGV4dChudWxscHRyKTsKKyAgICBSZW5kZXJMYXllcjo6TGF5ZXJQ
YWludGluZ0luZm8gcGFpbnRpbmdJbmZvKCZtX293bmluZ0xheWVyLCBjb21wb3NpdGVkQm91bmRz
KCksIHsgfSwgTGF5b3V0U2l6ZSgpKTsKKworICAgIFJlZ2lvbiBldmVudFJlZ2lvbjsKKyAgICBw
YWludGluZ0luZm8uZXZlbnRSZWdpb24gPSAmZXZlbnRSZWdpb247CisKKyAgICBhdXRvIHBhaW50
RmxhZ3MgPSBSZW5kZXJMYXllcjo6cGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFz
ZXNGbGFncygpIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJDb2xsZWN0aW5nRXZlbnRSZWdpb247
CisgICAgbV9vd25pbmdMYXllci5wYWludExheWVyQ29udGVudHMobnVsbENvbnRleHQsIHBhaW50
aW5nSW5mbywgcGFpbnRGbGFncyk7CisKKyAgICBldmVudFJlZ2lvbi50cmFuc2xhdGUocm91bmRl
ZEludFNpemUoY29udGVudE9mZnNldEluQ29tcG9zaXRpbmdMYXllcigpKSk7CisKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldEV2ZW50UmVnaW9uKFdURk1vdmUoZXZlbnRSZWdpb24pKTsKKyNlbmRp
ZgorfQorCiAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbGF5ZXIgY2hhbmdlZC4KIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nTGF5ZXIoYm9vbCBuZWVkc0FuY2Vz
dG9yQ2xpcCkKIHsKQEAgLTI1ODYsMTkgKzI2MDksOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0luZm8g
cGFpbnRpbmdJbmZvKCZtX293bmluZ0xheWVyLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlv
ciwgLW1fc3VicGl4ZWxPZmZzZXRGcm9tUmVuZGVyZXIpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBSZWdpb24gZXZlbnRSZWdpb247Ci0gICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVn
aW9uID0gJmV2ZW50UmVnaW9uOwotI2VuZGlmCi0KICAgICBtX293bmluZ0xheWVyLnBhaW50TGF5
ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb24gPSBudWxscHRy
OwotICAgIGV2ZW50UmVnaW9uLnRyYW5zbGF0ZShyb3VuZGVkSW50U2l6ZShjb250ZW50T2Zmc2V0
SW5Db21wb3NpdGluZ0xheWVyKCkpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEV2ZW50UmVn
aW9uKFdURk1vdmUoZXZlbnRSZWdpb24pKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fb3duaW5nTGF5
ZXIuY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkpCiAgICAgICAgIG1fb3duaW5nTGF5
ZXIucGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyB8
IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHJl
dmlzaW9uIDI0MzEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDYgKzM1Miw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBwYWludHNDb250ZW50KFJlbmRlckxheWVyOjpQYWludGVkQ29udGVudFJlcXVlc3QmKSBj
b25zdDsKIAogICAgIHZvaWQgdXBkYXRlRHJhd3NDb250ZW50KFBhaW50ZWRDb250ZW50c0luZm8m
KTsKKyAgICB2b2lkIHVwZGF0ZUV2ZW50UmVnaW9uKCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBjb21wb3NpdGluZyBsYXllciBoYXMgbm8gdmlzaWJsZSBjb250ZW50LgogICAgIGJv
b2wgaXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8m
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMxMzEpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTAzLTE4ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBMYXllciB3aXRoIG5v
IGJhY2tpbmcgc3RvcmUgc2hvdWxkIHN0aWxsIGhpdC10ZXN0IG92ZXIgYSBzY3JvbGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Mzc4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80ODY1MjA3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29sbGVj
dERlc2NlbmRhbnRWaWV3c0F0UG9pbnQpOgorCisgICAgICAgIE5vIG5lZWQgZm9yIHNwZWNpYWwg
V0tUaWxlZEJhY2tpbmdWaWV3LCB0aWxlZCB2aWV3cyBub3cgaGF2ZSBjb3JyZWN0IGV2ZW50IHJl
Z2lvbnMuCisKIDIwMTktMDMtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDMwOTIgYW5kIHIyNDMw
OTYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCShyZXZp
c2lvbiAyNDMxMzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDExICs3
Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW0KICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlU2ltcGxlTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tD
b21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6Ci0gICAgICAgIHJldHVybiBt
YWtlQWRvcHRpbmdWaWV3KFtbV0tUaWxlZEJhY2tpbmdWaWV3IGFsbG9jXSBpbml0XSk7CisgICAg
ICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGlu
aXRdKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdU
aWxlTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRo
UGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MuaAkocmV2aXNpb24gMjQzMTMxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw5ICs0MCw2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBpbnRlcmZhY2Ug
V0tDb21wb3NpdGluZ1ZpZXcgOiBVSVZpZXcKIEBlbmQKIAotQGludGVyZmFjZSBXS1RpbGVkQmFj
a2luZ1ZpZXcgOiBXS0NvbXBvc2l0aW5nVmlldwotQGVuZAotCiBAaW50ZXJmYWNlIFdLVHJhbnNm
b3JtVmlldyA6IFdLQ29tcG9zaXRpbmdWaWV3CiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5tbQkocmV2aXNpb24gMjQzMTMxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RGVzY2Vu
ZGFudFZpZXdzQXRQb2luCiAgICAgICAgIGF1dG8gaGFuZGxlc0V2ZW50ID0gWyZdIHsKICAgICAg
ICAgICAgIGlmICghW3ZpZXcgcG9pbnRJbnNpZGU6c3Vidmlld1BvaW50IHdpdGhFdmVudDpldmVu
dF0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKFt2aWV3
IGlzS2luZE9mQ2xhc3M6W1dLVGlsZWRCYWNraW5nVmlldyBjbGFzc11dKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYgKCFbdmlldyBpc0tpbmRPZkNsYXNzOltX
S0NvbXBvc2l0aW5nVmlldyBjbGFzc11dKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgYXV0byogbm9kZSA9IFJlbW90ZUxheWVyVHJlZU5vZGU6OmZvckNBTGF5ZXIo
dmlldy5sYXllcik7CkBAIC0xMTUsOSArMTEzLDYgQEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlv
bgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS1RpbGVkQmFja2luZ1ZpZXcKLUBlbmQKLQog
QGltcGxlbWVudGF0aW9uIFdLVHJhbnNmb3JtVmlldwogCiArIChDbGFzcylsYXllckNsYXNzCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDMxMzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMy0xOCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTGF5ZXIgd2l0aCBubyBiYWNraW5nIHN0b3JlIHNo
b3VsZCBzdGlsbCBoaXQtdGVzdCBvdmVyIGEgc2Nyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM3OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg2NTIwNzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIFJlb3JnYW5pemUgdGhlIHRlc3RzIGEgYml0IGFuZCBhZGQgc29tZSBuZXcgb25lcy4KKwor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0yLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xs
LW92ZXJsYXAtMi5odG1sOgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1z
Y3JvbGwtb3ZlcmxhcC0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xs
LW92ZXJsYXAtNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvb3Zl
cmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNv
dXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuanM6IEFkZGVkLgorICAgICAgICAoc2xlZXAp
OgorICAgICAgICAoYXN5bmMucnVuVGVzdCk6CisgICAgICAgIChsb2dTY3JvbGwpOgorICAgICAg
ICAob3V0cHV0Q2FzZSk6CisKIDIwMTktMDMtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDMwOTIg
YW5kIHIyNDMwOTYuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZs
b3ctc2Nyb2xsLW92ZXJsYXAtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNDMxMzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mv
b3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw4IEBACiBUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2aWFs
IG92ZXJsYXAgYXJlIGNvcnJlY3RseSB0YXJnZXRlZC4KIAotY2FzZSAxOiAKLWNhc2UgMjogU2Ny
b2xsYWJsZSAyIAorY2FzZSAxOiBTY3JvbGxhYmxlIDEgCitjYXNlIDI6IAogY2FzZSAzOiBTY3Jv
bGxhYmxlIDMgCiBjYXNlIDQ6IFNjcm9sbGFibGUgNCAKLWNhc2UgNTogU2Nyb2xsYWJsZSA1IAot
Y2FzZSA2OiAKK2Nhc2UgNTogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lv
cy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTIuaHRtbAkocmV2
aXNpb24gMjQzMTMxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93
LXNjcm9sbC1vdmVybGFwLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTQgQEAg
Ym9keSB7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgICBiYWNrZ3JvdW5kOiByZWQ7CiB9Cisub3Zl
cmxhcHBpbmctZW1wdHkgeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgIGxlZnQ6IDI1cHg7
CisgICAgdG9wOiAyNXB4OworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIGJhY2tncm91bmQ6IGJsdWU7Cit9CiAuY2xpcCB7CiAgICAgcG9zaXRpb246YWJzb2x1dGU7
CiAgICAgd2lkdGg6IDEwMHB4OwpAQCAtNDksODUgKzU3LDcgQEAgYm9keSB7CiB9CiA8L3N0eWxl
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QXN5bmNGcmFtZVNjcm9s
bGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jT3ZlcmZs
b3dTY3JvbGxpbmdFbmFibGVkKHRydWUpOwotfQotCi1mdW5jdGlvbiBzbGVlcChkZWxheSkKLXsK
LSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgc2V0VGltZW91dChyZXNvbHZl
LCBkZWxheSk7IH0pOwotfQotCi1hc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGZvciAo
Y29uc3Qgc2Nyb2xsYWJsZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub3ZlcmZsb3dz
Y3JvbGwnKSkgewotICAgICAgICBzY3JvbGxhYmxlLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcs
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGxvZ1Njcm9sbChlLnRhcmdldCk7Ci0gICAgICAg
IH0pOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgbGV0IGkgPSAwOwotICAgICAgICBmb3IgKGNv
bnN0IHNjcm9sbGNvbnRlbnQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNjcm9sbGNv
bnRlbnQnKSkKLSAgICAgICAgICAgIHNjcm9sbGNvbnRlbnQuaW5uZXJUZXh0ID0gIlNjcm9sbGFi
bGUgIiArICsraTsKLSAgICB9Ci0gICAgewotICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAgIGZv
ciAoY29uc3Qgb3ZlcmxhcHBpbmcgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm92ZXJs
YXBwaW5nJykpCi0gICAgICAgICAgICBvdmVybGFwcGluZy5pbnNlcnRCZWZvcmUoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIk92ZXJsYXBwaW5nICIgKyArK2kpLCBvdmVybGFwcGluZy5maXJzdENo
aWxkKTsKLSAgICB9Ci0KLQotICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5u
ZXIucnVuVUlTY3JpcHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoY29uc3QgdGVzdGNh
c2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhc2UnKSkKLSAgICAgICAgdGVzdGNh
c2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLQotICAgIHsKLSAgICAgICAgbGV0IGkgPSAwOwot
ICAgICAgICBmb3IgKGNvbnN0IHRlc3RjYXNlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy5jYXNlJykpIHsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIHRlc3RjYXNlLnN0eWxl
LmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgdGFyZ2V0ID0gdGVzdGNhc2UucXVlcnlTZWxlY3RvcignLnRhcmdldCcpOwotICAgICAgICAg
ICAgY29uc3QgcmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAg
ICAgIGNvbnN0IGNlbnRlclggPSAocmVjdC5sZWZ0ICsgcmVjdC5yaWdodCkgLyAyOwotICAgICAg
ICAgICAgY29uc3QgY2VudGVyWSA9IChyZWN0LnRvcCArIHJlY3QuYm90dG9tKSAvIDI7Ci0gICAg
ICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGNlbnRlclgsIGNlbnRl
clksIGNlbnRlclgsIGNlbnRlclkgLSAzMCk7Ci0gICAgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBv
aW50KGNlbnRlclgsIGNlbnRlclkgLSAzMCk7Ci0gICAgICAgICAgICBhd2FpdCBzbGVlcCg1MDAp
OwotCi0gICAgICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAg
ICAgICAgb3V0cHV0Q2FzZShpKTsKLSAgICAgICAgfQotICAgfQotCi0gICAgZm9yIChjb25zdCB0
ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKQotICAgICAgICB0
ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotCi0gICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19Ci0KLWNvbnN0IHNjcm9sbGVkRWxlbWVudHMgPSBuZXcgU2V0KCk7Ci0KLWZ1bmN0
aW9uIGxvZ1Njcm9sbChlbGVtZW50KSB7Ci0gICAgaWYgKHNjcm9sbGVkRWxlbWVudHMuaGFzKGVs
ZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgc2Nyb2xsZWRFbGVtZW50cy5hZGQoZWxlbWVu
dCk7Ci19Ci0KLWZ1bmN0aW9uIG91dHB1dENhc2UoaSkgewotICAgIGxvZy5pbm5lclRleHQgKz0g
ImNhc2UgIiArIGkgKyAiOiAiOwotICAgIGZvciAoY29uc3Qgc2Nyb2xsZWQgb2Ygc2Nyb2xsZWRF
bGVtZW50cykKLSAgICAgICAgbG9nLmlubmVyVGV4dCArPSBzY3JvbGxlZC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJzY3JvbGxjb250ZW50IilbMF0uaW5uZXJUZXh0ICsgIiAiOwotICAgIGxvZy5p
bm5lclRleHQgKz0gIlxuIjsKLSAgICBzY3JvbGxlZEVsZW1lbnRzLmNsZWFyKCk7Ci19Ci08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CkBA
IC0xMzcsOCArNjcsNyBAQCBUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2
CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KICAgICAgICAgPGRpdiBj
bGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0i
b3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiA4MHB4Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0ib3Zl
cmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBweDsgdG9wOiAtMzBweCI+PC9kaXY+CisgICAgPGRp
diBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbiI+CiAgICAgPC9k
aXY+CiA8L2Rpdj4KIApAQCAtMTQ2LDcgKzc1LDcgQEAgVGVzdCB0aGF0IHNjcm9sbGFibGUgYXJl
YXMgd2l0aCBub24tdHJpdgogICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+
CiAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgogICAgIDwvZGl2Pgot
ICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0iYm94LXNoYWRvdzogMHB4IDBweCAz
MnB4IDMycHggYmx1ZTsgbGVmdDogNjBweDsgdG9wOiA2MHB4Ij4KKyAgICA8ZGl2IGNsYXNzPSJv
dmVybGFwcGluZy1lbXB0eSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQiPgog
ICAgIDwvZGl2PgogPC9kaXY+CiAKQEAgLTE1NCwxNiArODMsNyBAQCBUZXN0IHRoYXQgc2Nyb2xs
YWJsZSBhcmVhcyB3aXRoIG5vbi10cml2CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwg
dGFyZ2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CiAgICAg
PC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJwb2ludGVyLWV2ZW50
czpub25lIj4KLSAgICA8L2Rpdj4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJjYXNlIj4KLSAgICA8
ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgotICAgICAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxjb250ZW50Ij48L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGNsYXNzPSJvdmVybGFw
cGluZyIgc3R5bGU9InRvcDotNjBweCI+Ci0gICAgVGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dAorICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBz
dHlsZT0iYm94LXNoYWRvdzogMHB4IDBweCAzMnB4IDMycHggYmx1ZTsgbGVmdDogNjBweDsgdG9w
OiA2MHB4Ij4KICAgICA8L2Rpdj4KIDwvZGl2PgogCkBAIC0xNzEsOCArOTEsNyBAQCBUZXN0IHRo
YXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIG5vbi10cml2CiAgICAgPGRpdiBjbGFzcz0ib3ZlcmZs
b3dzY3JvbGwgdGFyZ2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9k
aXY+CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJ0b3A6
LTYwcHg7IHBhZGRpbmctbGVmdDo0MHB4Ij4KLSAgICBUZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
dGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0CisgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmci
IHN0eWxlPSJwb2ludGVyLWV2ZW50czpub25lIj4KICAgICA8L2Rpdj4KIDwvZGl2PgogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAt
My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
aW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3Zlcmxh
cC0zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKK1Rlc3QgdGhh
dCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggdGV4dCBvdmVybGFwIGFyZSBjb3JyZWN0bHkgdGFyZ2V0
ZWQuCisKK2Nhc2UgMTogU2Nyb2xsYWJsZSAxIAorY2FzZSAyOiBTY3JvbGxhYmxlIDIgCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3Zlcmxh
cC0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292
ZXJmbG93LXNjcm9sbC1vdmVybGFwLTMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtMy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSI+Cis8c3R5bGU+Citib2R5IHsKKyAgICB0b3VjaC1hY3Rpb246IG5vbmU7
Cit9CisuY2FzZSB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKy5zY3Jv
bGxjb250ZW50IHsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgaGVpZ2h0OiA1MDBweDsKKyAgICBi
YWNrZ3JvdW5kOiBncmVlbjsKK30KKworLm92ZXJmbG93c2Nyb2xsIHsKKyAgICBvdmVyZmxvdzog
c2Nyb2xsOworICAgIGhlaWdodDogMTAwcHg7CisgICAgd2lkdGg6IDEwMHB4OworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKK30KKy5vdmVybGFw
cGluZyB7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgbGVmdDogMjVweDsKKyAgICB0b3A6
IDI1cHg7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgYmFja2dy
b3VuZDogcmVkOworfQorLmNsaXAgeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgIHdpZHRo
OiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIG92ZXJmbG93OmhpZGRlbjsKK30KKy5s
YXJnZSB7CisgICAgd2lkdGg6IDMwMDBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworfQorI2xvZyB7
CisgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgd2hpdGUtc3BhY2U6IHByZTsKK30KKzwvc3R5
bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJs
YXAuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUZXN0IHRoYXQgc2Nyb2xsYWJsZSBhcmVhcyB3aXRoIHRleHQgb3ZlcmxhcCBhcmUgY29ycmVj
dGx5IHRhcmdldGVkLgorPC9wPgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNz
PSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250
ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5
bGU9InRvcDotNjBweCI+CisgICAgVGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dAorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2Ui
PgorICAgIDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYg
Y2xhc3M9InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
Im92ZXJsYXBwaW5nIiBzdHlsZT0idG9wOi02MHB4OyBwYWRkaW5nLWxlZnQ6NDBweCI+CisgICAg
VGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dAorICAg
IDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9bG9nPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92
ZXJsYXAtNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTQtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwt
b3ZlcmxhcC00LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK1Rl
c3QgdGhhdCBzY3JvbGxhYmxlIGFyZWFzIHdpdGggb3ZlcmZsb3dpbmcgb3ZlcmxhcCBhcmUgY29y
cmVjdGx5IHRhcmdldGVkLgorCitjYXNlIDE6IAorY2FzZSAyOiAKK2Nhc2UgMzogCitjYXNlIDQ6
IAorY2FzZSA1OiAKK2Nhc2UgNjogU2Nyb2xsYWJsZSA2IAorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9pb3Mvb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAtNC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtb3Zl
cmxhcC00Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
aW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLTQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4K
KzxzdHlsZT4KK2JvZHkgeworICAgIHRvdWNoLWFjdGlvbjogbm9uZTsKK30KKy5jYXNlIHsKKyAg
ICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorLnNjcm9sbGNvbnRlbnQgeworICAg
IHdpZHRoOiA1MDBweDsKKyAgICBoZWlnaHQ6IDUwMHB4OworICAgIGJhY2tncm91bmQ6IGdyZWVu
OworfQorCisub3ZlcmZsb3dzY3JvbGwgeworICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworfQorLm92ZXJsYXBwaW5nIHsKKyAgICBwb3Np
dGlvbjphYnNvbHV0ZTsKKyAgICBsZWZ0OiAyNXB4OworICAgIHRvcDogMjVweDsKKyAgICB3aWR0
aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cisu
Y2xpcCB7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhl
aWdodDogMTAwcHg7CisgICAgb3ZlcmZsb3c6aGlkZGVuOworfQorLmxhcmdlIHsKKyAgICB3aWR0
aDogMzAwMHB4OworICAgIGhlaWdodDogMTUwcHg7Cit9CisjbG9nIHsKKyAgICBwb3NpdGlvbjpy
ZWxhdGl2ZTsKKyAgICB3aGl0ZS1zcGFjZTogcHJlOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgdGhhdCBzY3Jv
bGxhYmxlIGFyZWFzIHdpdGggb3ZlcmZsb3dpbmcgb3ZlcmxhcCBhcmUgY29ycmVjdGx5IHRhcmdl
dGVkLgorPC9wPgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxv
d3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6
IDgwcHgiPgorICAgICAgICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IC00
MHB4OyB0b3A6IC0zMHB4Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJjYXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IDgwcHg7IHotaW5kZXg6MCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTMw
cHgiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorICAg
IDxkaXYgY2xhc3M9Im92ZXJmbG93c2Nyb2xsIHRhcmdldCI+CisgICAgICAgIDxkaXYgY2xhc3M9
InNjcm9sbGNvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im92ZXJs
YXBwaW5nIiBzdHlsZT0ibGVmdDogODBweDsgdG9wOiA5MHB4OyB6LWluZGV4OjAiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IC00MHB4OyB0b3A6IC0xMjBw
eCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+CisgICAg
PGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0i
c2Nyb2xsY29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3Zlcmxh
cHBpbmciIHN0eWxlPSJsZWZ0OiA4MHB4OyB0b3A6IDkwcHg7IHotaW5kZXg6MCI+CisgICAgICAg
IDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVmdDogLTQwcHg7IHRvcDogLTEyMHB4
OyB6LWluZGV4Oi0xIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJj
YXNlIj4KKyAgICA8ZGl2IGNsYXNzPSJvdmVyZmxvd3Njcm9sbCB0YXJnZXQiPgorICAgICAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJvdmVybGFwcGluZyIgc3R5bGU9ImxlZnQ6IDgwcHg7IHRvcDogOTBweDsgei1pbmRleDow
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiAtNDBweDsg
dG9wOiAtMTIwcHg7IHotaW5kZXg6MSI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRp
diBjbGFzcz0iY2FzZSI+CisgICAgPGRpdiBjbGFzcz0ib3ZlcmZsb3dzY3JvbGwgdGFyZ2V0Ij4K
KyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0ib3ZlcmxhcHBpbmciIHN0eWxlPSJsZWZ0OiA4MHB4OyB0b3A6IDYwcHg7
IHotaW5kZXg6MCI+CisgICAgICAgIDxkaXYgY2xhc3M9Im92ZXJsYXBwaW5nIiBzdHlsZT0ibGVm
dDogLTQwcHg7IHRvcDogLTEyMHB4Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGlkPWxvZz48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL292ZXJmbG93LXNjcm9sbC1vdmVybGFw
Lmh0bWwJKHJldmlzaW9uIDI0MzEzMSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lv
cy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4NSAr
NDksNyBAQCBib2R5IHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKLSAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0QXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQodHJ1ZSk7Ci19Ci0K
LWZ1bmN0aW9uIHNsZWVwKGRlbGF5KQotewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSkgPT4geyBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5KTsgfSk7Ci19Ci0KLWFzeW5jIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICAgZm9yIChjb25zdCBzY3JvbGxhYmxlIG9mIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy5vdmVyZmxvd3Njcm9sbCcpKSB7Ci0gICAgICAgIHNjcm9sbGFibGUu
YWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgbG9n
U2Nyb2xsKGUudGFyZ2V0KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBs
ZXQgaSA9IDA7Ci0gICAgICAgIGZvciAoY29uc3Qgc2Nyb2xsY29udGVudCBvZiBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuc2Nyb2xsY29udGVudCcpKQotICAgICAgICAgICAgc2Nyb2xsY29u
dGVudC5pbm5lclRleHQgPSAiU2Nyb2xsYWJsZSAiICsgKytpOwotICAgIH0KLSAgICB7Ci0gICAg
ICAgIGxldCBpID0gMDsKLSAgICAgICAgZm9yIChjb25zdCBvdmVybGFwcGluZyBvZiBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCcub3ZlcmxhcHBpbmcnKSkKLSAgICAgICAgICAgIG92ZXJsYXBw
aW5nLmlubmVyVGV4dCA9ICJPdmVybGFwcGluZyAiICsgKytpOwotICAgIH0KLQotCi0gICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCcuY2FzZScpKQotICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OwotCi0gICAgewotICAgICAgICBsZXQgaSA9IDA7Ci0gICAgICAgIGZvciAoY29uc3QgdGVzdGNh
c2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhc2UnKSkgewotICAgICAgICAgICAg
KytpOwotICAgICAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2sn
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSB0ZXN0Y2FzZS5xdWVy
eVNlbGVjdG9yKCcudGFyZ2V0Jyk7Ci0gICAgICAgICAgICBjb25zdCByZWN0ID0gdGFyZ2V0Lmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgY29uc3QgY2VudGVyWCA9IChyZWN0
LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDI7Ci0gICAgICAgICAgICBjb25zdCBjZW50ZXJZID0gKHJl
Y3QudG9wICsgcmVjdC5ib3R0b20pIC8gMjsKLSAgICAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJh
Z0Zyb21Qb2ludFRvUG9pbnQoY2VudGVyWCwgY2VudGVyWSwgY2VudGVyWCwgY2VudGVyWSAtIDMw
KTsKLSAgICAgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoY2VudGVyWCwgY2VudGVyWSAtIDMw
KTsKLSAgICAgICAgICAgIGF3YWl0IHNsZWVwKDUwMCk7Ci0KLSAgICAgICAgICAgIHRlc3RjYXNl
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgICBvdXRwdXRDYXNlKGkpOwotICAg
ICAgICB9Ci0gICB9Ci0KLSAgICBmb3IgKGNvbnN0IHRlc3RjYXNlIG9mIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5jYXNlJykpCi0gICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7Ci0KLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotY29uc3Qgc2Nyb2xs
ZWRFbGVtZW50cyA9IG5ldyBTZXQoKTsKLQotZnVuY3Rpb24gbG9nU2Nyb2xsKGVsZW1lbnQpIHsK
LSAgICBpZiAoc2Nyb2xsZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBzY3JvbGxlZEVsZW1lbnRzLmFkZChlbGVtZW50KTsKLX0KLQotZnVuY3Rpb24gb3V0cHV0
Q2FzZShpKSB7Ci0gICAgbG9nLmlubmVyVGV4dCArPSAiY2FzZSAiICsgaSArICI6ICI7Ci0gICAg
Zm9yIChjb25zdCBzY3JvbGxlZCBvZiBzY3JvbGxlZEVsZW1lbnRzKQotICAgICAgICBsb2cuaW5u
ZXJUZXh0ICs9IHNjcm9sbGVkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInNjcm9sbGNvbnRlbnQi
KVswXS5pbm5lclRleHQgKyAiICI7Ci0gICAgbG9nLmlubmVyVGV4dCArPSAiXG4iOwotICAgIHNj
cm9sbGVkRWxlbWVudHMuY2xlYXIoKTsKLX0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyZmxvdy1zY3JvbGwtb3ZlcmxhcC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcmZsb3ctc2Nyb2xsLW92
ZXJsYXAuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVz
b3VyY2VzL292ZXJmbG93LXNjcm9sbC1vdmVybGFwLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzggQEAKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKHRydWUpOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKK30K
KworZnVuY3Rpb24gc2xlZXAoZGVsYXkpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB7IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpOyB9KTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBmb3IgKGNvbnN0IHNjcm9sbGFibGUgb2YgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLm92ZXJmbG93c2Nyb2xsJykpIHsKKyAgICAgICAgc2Nyb2xsYWJs
ZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBs
b2dTY3JvbGwoZS50YXJnZXQpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IGxldCBpID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBzY3JvbGxjb250ZW50IG9mIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zY3JvbGxjb250ZW50JykpCisgICAgICAgICAgICBzY3JvbGxj
b250ZW50LmlubmVyVGV4dCA9ICJTY3JvbGxhYmxlICIgKyArK2k7CisgICAgfQorICAgIHsKKyAg
ICAgICAgbGV0IGkgPSAwOworICAgICAgICBmb3IgKGNvbnN0IG92ZXJsYXBwaW5nIG9mIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vdmVybGFwcGluZycpKQorICAgICAgICAgICAgb3Zlcmxh
cHBpbmcuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJPdmVybGFwcGluZyAi
ICsgKytpKSwgb3ZlcmxhcHBpbmcuZmlyc3RDaGlsZCk7CisgICAgfQorCisKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKGNvbnN0IHRlc3RjYXNlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJy5jYXNlJykpCisgICAgICAgIHRlc3RjYXNlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisK
KyAgICB7CisgICAgICAgIGxldCBpID0gMDsKKyAgICAgICAgZm9yIChjb25zdCB0ZXN0Y2FzZSBv
ZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FzZScpKSB7CisgICAgICAgICAgICArK2k7
CisgICAgICAgICAgICB0ZXN0Y2FzZS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7CisK
KyAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRlc3RjYXNlLnF1ZXJ5U2VsZWN0b3IoJy50YXJn
ZXQnKTsKKyAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7CisgICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHJlY3QubGVmdCArIHJlY3Qucmln
aHQpIC8gMjsKKyAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAocmVjdC50b3AgKyByZWN0LmJv
dHRvbSkgLyAyOworICAgICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2lu
dChjZW50ZXJYLCBjZW50ZXJZLCBjZW50ZXJYLCBjZW50ZXJZIC0gMzApOworICAgICAgICAgICAg
YXdhaXQgbGlmdFVwQXRQb2ludChjZW50ZXJYLCBjZW50ZXJZIC0gMzApOworICAgICAgICAgICAg
YXdhaXQgc2xlZXAoNTAwKTsKKworICAgICAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9
ICdub25lJzsKKyAgICAgICAgICAgIG91dHB1dENhc2UoaSk7CisgICAgICAgIH0KKyAgIH0KKwor
ICAgIGZvciAoY29uc3QgdGVzdGNhc2Ugb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNh
c2UnKSkKKyAgICAgICAgdGVzdGNhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitjb25zdCBzY3JvbGxlZEVsZW1lbnRzID0gbmV3
IFNldCgpOworCitmdW5jdGlvbiBsb2dTY3JvbGwoZWxlbWVudCkgeworICAgIGlmIChzY3JvbGxl
ZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworICAgIHNjcm9sbGVkRWxl
bWVudHMuYWRkKGVsZW1lbnQpOworfQorCitmdW5jdGlvbiBvdXRwdXRDYXNlKGkpIHsKKyAgICBs
b2cuaW5uZXJUZXh0ICs9ICJjYXNlICIgKyBpICsgIjogIjsKKyAgICBmb3IgKGNvbnN0IHNjcm9s
bGVkIG9mIHNjcm9sbGVkRWxlbWVudHMpCisgICAgICAgIGxvZy5pbm5lclRleHQgKz0gc2Nyb2xs
ZWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgic2Nyb2xsY29udGVudCIpWzBdLmlubmVyVGV4dCAr
ICIgIjsKKyAgICBsb2cuaW5uZXJUZXh0ICs9ICJcbiI7CisgICAgc2Nyb2xsZWRFbGVtZW50cy5j
bGVhcigpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>