<?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>196636</bug_id>
          
          <creation_ts>2019-04-04 17:07:02 -0700</creation_ts>
          <short_desc>AX: Support API: accessibilityReplaceRange:withText</short_desc>
          <delta_ts>2019-04-08 18:54:59 -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>Accessibility</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524524</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-04 17:07:02 -0700</bug_when>
    <thetext>Support accessibility platform API of

accessibilityReplaceRange:withText

&lt;rdar://problem/49438073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524530</commentid>
    <comment_count>1</comment_count>
      <attachid>366776</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-04 17:09:23 -0700</bug_when>
    <thetext>Created attachment 366776
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524532</commentid>
    <comment_count>2</comment_count>
      <attachid>366777</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-04 17:10:47 -0700</bug_when>
    <thetext>Created attachment 366777
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524534</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-04 17:12:59 -0700</bug_when>
    <thetext>Attachment 366777 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityObject.h:297:  The parameter name &quot;r&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524536</commentid>
    <comment_count>4</comment_count>
      <attachid>366778</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-04 17:14:31 -0700</bug_when>
    <thetext>Created attachment 366778
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524801</commentid>
    <comment_count>5</comment_count>
      <attachid>366835</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-05 13:00:29 -0700</bug_when>
    <thetext>Created attachment 366835
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525300</commentid>
    <comment_count>6</comment_count>
      <attachid>366835</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-04-08 12:55:28 -0700</bug_when>
    <thetext>Comment on attachment 366835
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2287
&gt; +    if (auto frame = renderer()-&gt;document().frame()) {

auto* please

I could have sworn RnederObject has a frame() convenience method instead of deref document.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2296
&gt; +        downcast&lt;HTMLInputElement&gt;(element).setRangeText(replacementString, range.start, range.length, &quot;&quot;);

Bad cast if element is HTMLTextAreaElement.

&gt; Tools/DumpRenderTree/AccessibilityUIElement.cpp:811
&gt; +    JSStringRef text = 0;

nullptr? Don&apos;t we have some smart pointer like class we can use to manage this value. Pretty sure we have one. Can you take a look at other code that make use of JSStringRef?

&gt; Tools/DumpRenderTree/AccessibilityUIElement.cpp:820
&gt; +    JSValueRef result = JSValueMakeBoolean(context, toAXElement(thisObject)-&gt;replaceTextInRange(text, position, length));

Assuming this handles 0 for position/length.

&gt; Tools/DumpRenderTree/AccessibilityUIElement.cpp:822
&gt; +    if (text)
&gt; +        JSStringRelease(text);

Ok as-is. Smart pointer would be preferred. If we don&apos;t have one then does JSStringRelease() null check for us?

&gt; LayoutTests/accessibility/mac/replace-text-with-range-expected.txt:2
&gt; +HelloBlorg
&gt; + 

Ok as-is. In my opinion this makes the test look a little messy. If I was writing this test I would figure out a way to omit this.

&gt; LayoutTests/accessibility/mac/replace-text-with-range.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

Old Doctype. Intentional? If not, use new hotness: &lt;!DOCTYPE html&gt; 😀

&gt; LayoutTests/accessibility/mac/replace-text-with-range.html:4
&gt; +&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

New hotness is to just include js-test.js and omit -pre and -post.js files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525448</commentid>
    <comment_count>7</comment_count>
      <attachid>366993</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-08 16:18:39 -0700</bug_when>
    <thetext>Created attachment 366993
patch

all comments addressed. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525449</commentid>
    <comment_count>8</comment_count>
      <attachid>366994</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-08 16:19:48 -0700</bug_when>
    <thetext>Created attachment 366994
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525452</commentid>
    <comment_count>9</comment_count>
      <attachid>366995</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-04-08 16:22:28 -0700</bug_when>
    <thetext>Created attachment 366995
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525486</commentid>
    <comment_count>10</comment_count>
      <attachid>366995</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-08 17:39:56 -0700</bug_when>
    <thetext>Comment on attachment 366995
patch for landing

Clearing flags on attachment: 366995

Committed r244059: &lt;https://trac.webkit.org/changeset/244059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525487</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-08 17:39:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525501</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-08 18:26:58 -0700</bug_when>
    <thetext>Committed r244062: &lt;https://trac.webkit.org/changeset/244062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525515</commentid>
    <comment_count>13</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-04-08 18:54:59 -0700</bug_when>
    <thetext>Committed r244066: &lt;https://trac.webkit.org/changeset/244066&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366776</attachid>
            <date>2019-04-04 17:09:23 -0700</date>
            <delta_ts>2019-04-04 17:10:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17202</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3NCw3
ICsyMjc0LDMyIEBACiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBF
dmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAgICAgcmV0
dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KKyAgICAKK2Jvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoIXJl
bmRlcmVyKCkgfHwgIWlzPEVsZW1lbnQ+KG5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqcmVuZGVyZXIoKS0+bm9k
ZSgpKTsKKworICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGVkaXRvcidzIGluc2VydFRleHQgdG8g
bWltaWMgdHlwaW5nIGludG8gdGhlIGZpZWxkLgorICAgIC8vIEFsc28gb25seSBkbyB0aGlzIHdo
ZW4gdGhlIGZpZWxkIGlzIGluIGVkaXRpbmcgbW9kZS4KKyAgICBpZiAoYXV0byBmcmFtZSA9IHJl
bmRlcmVyKCktPmRvY3VtZW50KCkuZnJhbWUoKSkgeworICAgICAgICBpZiAoZWxlbWVudC5zaG91
bGRVc2VJbnB1dE1ldGhvZCgpKSB7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShyYW5nZUZvclBsYWluVGV4dFJhbmdlKHJhbmdlKS5nZXQoKSwgRE9XTlNU
UkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFN0
cmluZywgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIEVkaXRvcjo6U21hcnRSZXBsYWNl
OjpObyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTFRleHRBcmVh
RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
ZWxlbWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCByYW5nZS5zdGFydCwgcmFu
Z2UubGVuZ3RoLCAiIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisgICAgCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRpc3BhdGNo
QWNjZXNzaWJsZVNldFZhbHVlRXZlbnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICBpZiAoIWNhblNldFZhbHVlQXR0cmlidXRlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMjQzODE3
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMsMTAgQEAKICAgICAgICAgLCBsZW5ndGgobCkK
ICAgICB7IH0KICAgICAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGFpblRleHRSYW5nZShO
U1JhbmdlIHIpOworI2VuZGlmCisgICAgCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhc3RhcnQgJiYgIWxlbmd0aDsgfQogfTsKIApAQCAtNjk3LDYgKzcwMSw4IEBACiAgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgYm9vbCByZXBs
YWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5t
bQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QWNjZXNzaWJpbGl0eU9iamVjdEJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJh
bmdlKE5TUmFuZ2UgcikKKyAgICA6IHN0YXJ0KHIubG9jYXRpb24pCisgICAgLCBsZW5ndGgoci5s
ZW5ndGgpCit7Cit9CisgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlZWNoSGlu
dEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNwZWFrID0gc3BlYWtBc1Byb3Bl
cnR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2
aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2NDIsNiAr
MzY0MiwxNCBAQAogICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlXTsK
IH0KIAorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdp
dGhUZXh0OihOU1N0cmluZyAqKXN0cmluZworeworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVybiBtX29i
amVjdC0+cmVwbGFjZVRleHRJblJhbmdlKHN0cmluZywgUGxhaW5UZXh0UmFuZ2UocmFuZ2UpKTsK
K30KKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIp
CiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQogSUdOT1JFX1dBUk5JTkdTX0VORApJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzOTE3
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MTktMDQtMDQgIGNocmlzIGZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAg
ICBBWDogU3VwcG9ydCBBUEk6IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6d2l0aFRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjYzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChyZXBsYWNlVGV4dElu
UmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNl
VGV4dEluUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFz
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1t
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2Up
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisKIDIwMTktMDQtMDQgIEFha2FzaCBKYWluICA8YWFr
YXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgRmxha3kgQVBJIFRlc3QgVGVz
dFdlYktpdEFQSS5XZWJLaXQuRm9jdXNUZXh0SW5wdXRDb250ZXh0CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMjQz
ODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwNiw2ICs4MDYsMjQgQEAKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlcGxhY2VUZXh0
SW5SYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1N0
cmluZ1JlZiB0ZXh0ID0gMDsKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGludCBsZW5ndGgg
PSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDMpIHsKKyAgICAgICAgdGV4dCA9IEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAg
ICBwb3NpdGlvbiA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2Vw
dGlvbik7CisgICAgICAgIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMl0sIGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0g
SlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5yZXBs
YWNlVGV4dEluUmFuZ2UodGV4dCwgcG9zaXRpb24sIGxlbmd0aCkpOworICAgIGlmICh0ZXh0KQor
ICAgICAgICBKU1N0cmluZ1JlbGVhc2UodGV4dCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlID0gMDsKQEAg
LTE2MDksNiArMTYyNywxMSBAQAogewogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
TGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQogewogICAgIHJldHVybiAwOwpA
QCAtMTkzMSw2ICsxOTU0LDcgQEAKICAgICAgICAgeyAidGV4dE1hcmtlclJhbmdlRm9yRWxlbWVu
dCIsIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAicmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsIHJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJy
ZXBsYWNlVGV4dEluUmFuZ2UiLCByZXBsYWNlVGV4dEluUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRy
aWJ1dGUiLCBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1
dGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbmRleEZvclRleHRNYXJrZXIiLCBpbmRl
eEZvclRleHRNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1RleHRNYXJrZXJW
YWxpZCIsIGlzVGV4dE1hcmtlclZhbGlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDI0Mzgx
NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw4IEBACiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgc2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKLSAgICAKKyAgICBib29sIHJlcGxhY2VU
ZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKwogICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBh
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
LCBib29sIGluY2x1ZGVTcGVsbENoZWNrKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAyNDM4
MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxMSBAQAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5n
ZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQog
ewogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw2ICs3MCw3IEBACiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxi
YWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsK
IAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKKy0g
KEJPT0wpYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoVGV4dDoo
TlNTdHJpbmcgKilzdHJpbmc7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE2MzMsNiArMTYzNCwx
NCBAQAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBpbnQgbG9j
YXRpb24sIGludCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
cmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VSYW5nZShs
b2NhdGlvbiwgbGVuZ3RoKSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OnN0cmluZ11dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24g
MjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzksNyBAQAogICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U+IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNldFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJp
bmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFy
a2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNp
b24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYg
KzIwNSw3IEBACiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB2b2lkIHJlc2V0U2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBib29sZWFuIHJlcGxhY2VUZXh0SW5SYW5nZShET01TdHJp
bmcgc3RyaW5nLCBsb25nIHBvc2l0aW9uLCBsb25nIGxlbmd0aCk7CiAgICAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSByYW5nZSk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtlckZvckJv
dW5kcyhsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAyNDM4MTcp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ0LDYgKzExNDQsMTEgQEAK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKIHsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24g
MjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBA
QAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVu
dCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChCT09MKWFjY2Vzc2li
aWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICopc3Ry
aW5nOwogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNT
dHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUlu
dGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3Vu
dDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CkBAIC0xODA2LDYgKzE4MDcsMTQgQEAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4
dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSB3aXRo
VGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnN0cmluZ11dOworICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1h
cmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTkgQEAKK0hlbGxvQmxvcmcKKyAKK1RoaXMgdGVzdHMgdGhhdCB0aGUgcmVwbGFj
ZSB3aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2Uo
IkJsdXJiIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFibGUuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IEhlbGxvQmx1cmInCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4
dEluUmFuZ2UoIkJsb3JnIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFibGUuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmxvcmcnCitQQVNTIHRleHQucmVwbGFjZVRleHRJ
blJhbmdlKCJibHVyYiIsIDYsIDUpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogSGVsbG8gYmx1cmInCitQQVNTIHRleHRhcmVhLnJlcGxhY2VUZXh0SW5SYW5nZSgi
Ymx1cmIiLCA2LCA1KSBpcyB0cnVlCitQQVNTIHRleHRhcmVhLnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBIZWxsbyBibHVyYicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNl
LXRleHQtd2l0aC1yYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBp
ZD0iYm9keSI+Cis8ZGl2IGlkPSJjb250ZW50Ij4KKworPGRpdiBpZD0iY29udGVudGVkaXRhYmxl
IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHJvbGU9InRleHRib3giPkhlbGxvV29ybGQ8L2Rpdj4K
KzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dCIgdmFsdWU9IkhlbGxvIHdvcmxkIj4KKzx0ZXh0
YXJlYSBpZD0idGV4dGFyZWEiPkhlbGxvIHdvcmxkPC90ZXh0YXJlYT4KKworPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPC9kaXY+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIHJlcGxhY2Ugd2l0aCByYW5n
ZSBBUEkgZnVuY3Rpb25zIGFzIGV4cGVjdGVkLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJh
bmdlKCJCbHVyYiIsIDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRpdGFibGUu
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvQmx1cmInIik7CisKKyAgICAgICAgLy8gbm93
IHRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gYSBjb250cm9sIGhhcyBmb2N1cworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlIikuZm9jdXMoKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJhbmdlKCJCbG9yZyIs
IDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRpdGFibGUuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IEhlbGxvQmxvcmcnIik7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50ZWRpdGFibGUiKS5ibHVyKCk7CisKKyAgICAgICAgdmFyIHRleHQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCd0ZXh0LnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KScp
OworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG8g
Ymx1cmInIik7CisKKyAgICAgICAgdmFyIHRleHRhcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoJ3RleHRhcmVhLnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KScpOworICAgICAg
ICBzaG91bGRCZSgidGV4dGFyZWEuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvIGJsdXJi
JyIpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366777</attachid>
            <date>2019-04-04 17:10:47 -0700</date>
            <delta_ts>2019-04-04 17:14:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18293</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IHRoaXMgcGxhdGZvcm0gQVBJIG9u
IG1hYyB0byBwcm92aWRlIGEgd2F5IHRvIHJlcGxhY2UgYSByYW5nZSBvZiBlZGl0YWJsZSB0ZXh0
LgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJh
bmdlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJhbmdlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eVJlcGxhY2VSYW5nZTp3aXRoVGV4dDpdKToKKwogMjAxOS0wNC0wNCAgU2hhd24gUm9iZXJ0cyAg
PHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQzODY4LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjc0LDcgKzIyNzQsMzIgQEAKICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsK
ICAgICByZXR1cm4gZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnQpOwogfQorICAgIAor
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQoreworICAg
IGlmICghcmVuZGVyZXIoKSB8fCAhaXM8RWxlbWVudD4obm9kZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpyZW5kZXJl
cigpLT5ub2RlKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZWRpdG9yJ3MgaW5zZXJ0
VGV4dCB0byBtaW1pYyB0eXBpbmcgaW50byB0aGUgZmllbGQuCisgICAgLy8gQWxzbyBvbmx5IGRv
IHRoaXMgd2hlbiB0aGUgZmllbGQgaXMgaW4gZWRpdGluZyBtb2RlLgorICAgIGlmIChhdXRvIGZy
YW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAgIGlmIChlbGVt
ZW50LnNob3VsZFVzZUlucHV0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UocmFuZ2UpLmdldCgp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7Cisg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxh
Y2VtZW50U3RyaW5nLCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgRWRpdG9yOjpTbWFy
dFJlcGxhY2U6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KS5zZXRSYW5nZVRleHQocmVwbGFjZW1lbnRTdHJpbmcsIHJhbmdlLnN0
YXJ0LCByYW5nZS5sZW5ndGgsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZGlzcGF0Y2hBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogewogICAgIGlmICghY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lv
biAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywxMCBAQAogICAgICAgICAsIGxl
bmd0aChsKQogICAgIHsgfQogICAgIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4
dFJhbmdlKE5TUmFuZ2Ugcik7CisjZW5kaWYKKyAgICAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9CiB9OwogCkBAIC02OTcsNiArNzAxLDggQEAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICBi
b29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5n
ZSYpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
Um93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQbGFpblRleHRSYW5nZTo6UGxh
aW5UZXh0UmFuZ2UoTlNSYW5nZSByKQorICAgIDogc3RhcnQoci5sb2NhdGlvbikKKyAgICAsIGxl
bmd0aChyLmxlbmd0aCkKK3sKK30KKyAgICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
cGVlY2hIaW50QXR0cmlidXRlVmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gc3BlYWsgPSBzcGVh
a0FzUHJvcGVydHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzY0Miw2ICszNjQyLDE0IEBACiAgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlTY3JvbGxUb1Zp
c2libGVdOwogfQogCistIChCT09MKWFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICopc3RyaW5nCit7CisgICAgaWYgKCFbc2VsZiB1cGRh
dGVPYmplY3RCYWNraW5nU3RvcmVdKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgcmV0
dXJuIG1fb2JqZWN0LT5yZXBsYWNlVGV4dEluUmFuZ2Uoc3RyaW5nLCBQbGFpblRleHRSYW5nZShy
YW5nZSkpOworfQorCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50
YXRpb25zIikKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRy
aWJ1dGU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiBJR05PUkVfV0FSTklOR1NfRU5ECkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDM5MTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NiBAQAorMjAxOS0wNC0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBTdXBwb3J0IEFQSTogYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTp3aXRo
VGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
NjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKHJlcGxh
Y2VUZXh0SW5SYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRJT1MubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJ
blJhbmdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0
SW5SYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKToKKwogMjAxOS0wNC0wNCAgQWFrYXNoIEph
aW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBGbGFreSBBUEkg
VGVzdCBUZXN0V2ViS2l0QVBJLldlYktpdC5Gb2N1c1RleHRJbnB1dENvbnRleHQKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA2LDYgKzgwNiwyNCBAQAogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgcmVw
bGFjZVRleHRJblJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIEpTU3RyaW5nUmVmIHRleHQgPSAwOworICAgIGludCBwb3NpdGlvbiA9IDA7CisgICAgaW50
IGxlbmd0aCA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMykgeworICAgICAgICB0ZXh0
ID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7
CisgICAgICAgIHBvc2l0aW9uID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sx
XSwgZXhjZXB0aW9uKTsKKyAgICAgICAgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVJlZiBy
ZXN1bHQgPSBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVj
dCktPnJlcGxhY2VUZXh0SW5SYW5nZSh0ZXh0LCBwb3NpdGlvbiwgbGVuZ3RoKSk7CisgICAgaWYg
KHRleHQpCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh0ZXh0KTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2Ug
PSAwOwpAQCAtMTYwOSw2ICsxNjI3LDExIEBACiB7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCiB7CiAgICAgcmV0
dXJuIDA7CkBAIC0xOTMxLDYgKzE5NTQsNyBAQAogICAgICAgICB7ICJ0ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50IiwgdGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIiwgc2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlIiwgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInJlcGxhY2VUZXh0SW5SYW5nZSIsIHJlcGxhY2VUZXh0SW5SYW5nZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250
YWluc0F0dHJpYnV0ZSIsIGF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWlu
c0F0dHJpYnV0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImluZGV4Rm9yVGV4dE1hcmtl
ciIsIGluZGV4Rm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzVGV4
dE1hcmtlclZhbGlkIiwgaXNUZXh0TWFya2VyVmFsaWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNp
b24gMjQzODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDggQEAKICAgICBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNl
dFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgYm9vbCBzZXRTZWxlY3RlZFZpc2libGVU
ZXh0UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwotICAgIAorICAgIGJvb2wg
cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgp
OworCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSopOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVk
U3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSosIGJvb2wgaW5jbHVkZVNwZWxsQ2hlY2spOwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlz
aW9uIDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNiArNDc3LDExIEBACiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRl
eHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSgpCiB7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDYgKzcwLDcgQEAKIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0
aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNv
bnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRp
b25zKQorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdp
dGhUZXh0OihOU1N0cmluZyAqKXN0cmluZzsKIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2Vy
KWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OwogLSAoTlNVSW50ZWdlcilhY2Nl
c3NpYmlsaXR5SW5kZXhPZkNoaWxkOihpZCljaGlsZDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRlOwpAQCAtMTYzMyw2
ICsxNjM0LDE0IEBACiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogfQogCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiBzdHJpbmcs
IGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOk5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6c3RyaW5nXV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVy
biBmYWxzZTsKK30KKwogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5n
ZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShy
ZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw3
IEBACiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHN0YXJ0TWFya2VyLCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKTsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB2b2lkIHJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5n
ZShKU1N0cmluZ1JlZiwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKICAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqKTsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVu
ZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDUsNiArMjA1LDcgQEAKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRNYXJrZXIs
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGVuZE1hcmtlcik7CiAgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOworICAgIGJvb2xlYW4gcmVwbGFjZVRleHRJblJhbmdl
KERPTVN0cmluZyBzdHJpbmcsIGxvbmcgcG9zaXRpb24sIGxvbmcgbGVuZ3RoKTsKICAgICBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIHJhbmdlKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRUZXh0TWFy
a2VyRm9yQm91bmRzKGxvbmcgeCwgbG9uZyB5LCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlzaW9u
IDI0MzgxNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTExNDQsNiArMTE0
NCwxMSBAQAogewogICAgIHJldHVybiBudWxscHRyOwogfQorICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYsIGludCwgaW50KQor
eworICAgIHJldHVybiBmYWxzZTsKK30KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50IHgsIGludCB5
KQogewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShy
ZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2
ICs3NCw3IEBACiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShp
ZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKIAogQGlu
dGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKKy0gKEJPT0wp
YWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoVGV4dDooTlNTdHJp
bmcgKilzdHJpbmc7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFs
dWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBtYXhDb3Vu
dDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJp
YnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE4MDYsNiArMTgwNywxNCBAQAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
cGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiBzdHJpbmcsIGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5n
dGgpIHdpdGhUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c3RyaW5nXV07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Rh
cnRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpJbmRleDogTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRo
LXJhbmdlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxOSBAQAorSGVsbG9CbG9yZworIAorVGhpcyB0ZXN0cyB0aGF0IHRo
ZSByZXBsYWNlIHdpdGggcmFuZ2UgQVBJIGZ1bmN0aW9ucyBhcyBleHBlY3RlZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudGVkaXRhYmxlLnJlcGxhY2VUZXh0
SW5SYW5nZSgiQmx1cmIiLCA1LCA1KSBpcyB0cnVlCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogSGVsbG9CbHVyYicKK1BBU1MgY29udGVudGVkaXRhYmxlLnJl
cGxhY2VUZXh0SW5SYW5nZSgiQmxvcmciLCA1LCA1KSBpcyB0cnVlCitQQVNTIGNvbnRlbnRlZGl0
YWJsZS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogSGVsbG9CbG9yZycKK1BBU1MgdGV4dC5yZXBs
YWNlVGV4dEluUmFuZ2UoImJsdXJiIiwgNiwgNSkgaXMgdHJ1ZQorUEFTUyB0ZXh0LnN0cmluZ1Zh
bHVlIGlzICdBWFZhbHVlOiBIZWxsbyBibHVyYicKK1BBU1MgdGV4dGFyZWEucmVwbGFjZVRleHRJ
blJhbmdlKCJibHVyYiIsIDYsIDUpIGlzIHRydWUKK1BBU1MgdGV4dGFyZWEuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IEhlbGxvIGJsdXJiJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1y
YW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IGlkPSJib2R5Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8ZGl2IGlkPSJjb250ZW50
ZWRpdGFibGUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgcm9sZT0idGV4dGJveCI+SGVsbG9Xb3Js
ZDwvZGl2PgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gd29ybGQi
PgorPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSI+SGVsbG8gd29ybGQ8L3RleHRhcmVhPgorCis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8L2Rpdj4K
KzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgcmVwbGFjZSB3
aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuIik7CisKKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGUg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnRl
ZGl0YWJsZSIpOworICAgICAgICBzaG91bGRCZVRydWUoJ2NvbnRlbnRlZGl0YWJsZS5yZXBsYWNl
VGV4dEluUmFuZ2UoIkJsdXJiIiwgNSwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRl
ZGl0YWJsZS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG9CbHVyYiciKTsKKworICAgICAg
ICAvLyBub3cgdGVzdCB3aGF0IGhhcHBlbnMgd2hlbiBhIGNvbnRyb2wgaGFzIGZvY3VzCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUiKS5mb2N1cygpOwor
ICAgICAgICBzaG91bGRCZVRydWUoJ2NvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2Uo
IkJsb3JnIiwgNSwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRlZGl0YWJsZS5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG9CbG9yZyciKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZSIpLmJsdXIoKTsKKworICAgICAgICB2YXIgdGV4
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIp
OworICAgICAgICBzaG91bGRCZVRydWUoJ3RleHQucmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIs
IDYsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBIZWxsbyBibHVyYiciKTsKKworICAgICAgICB2YXIgdGV4dGFyZWEgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHRhcmVhIik7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgndGV4dGFyZWEucmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpJyk7
CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0YXJlYS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVs
bG8gYmx1cmInIik7CisgICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366778</attachid>
            <date>2019-04-04 17:14:31 -0700</date>
            <delta_ts>2019-04-05 13:00:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18291</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IHRoaXMgcGxhdGZvcm0gQVBJIG9u
IG1hYyB0byBwcm92aWRlIGEgd2F5IHRvIHJlcGxhY2UgYSByYW5nZSBvZiBlZGl0YWJsZSB0ZXh0
LgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJh
bmdlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJhbmdlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eVJlcGxhY2VSYW5nZTp3aXRoVGV4dDpdKToKKwogMjAxOS0wNC0wNCAgU2hhd24gUm9iZXJ0cyAg
PHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQzODY4LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjc0LDcgKzIyNzQsMzIgQEAKICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsK
ICAgICByZXR1cm4gZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnQpOwogfQorICAgIAor
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQoreworICAg
IGlmICghcmVuZGVyZXIoKSB8fCAhaXM8RWxlbWVudD4obm9kZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpyZW5kZXJl
cigpLT5ub2RlKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZWRpdG9yJ3MgaW5zZXJ0
VGV4dCB0byBtaW1pYyB0eXBpbmcgaW50byB0aGUgZmllbGQuCisgICAgLy8gQWxzbyBvbmx5IGRv
IHRoaXMgd2hlbiB0aGUgZmllbGQgaXMgaW4gZWRpdGluZyBtb2RlLgorICAgIGlmIChhdXRvIGZy
YW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAgIGlmIChlbGVt
ZW50LnNob3VsZFVzZUlucHV0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UocmFuZ2UpLmdldCgp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7Cisg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxh
Y2VtZW50U3RyaW5nLCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgRWRpdG9yOjpTbWFy
dFJlcGxhY2U6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KS5zZXRSYW5nZVRleHQocmVwbGFjZW1lbnRTdHJpbmcsIHJhbmdlLnN0
YXJ0LCByYW5nZS5sZW5ndGgsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZGlzcGF0Y2hBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogewogICAgIGlmICghY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lv
biAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywxMCBAQAogICAgICAgICAsIGxl
bmd0aChsKQogICAgIHsgfQogICAgIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4
dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisgICAgCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQogfTsKIApAQCAtNjk3LDYgKzcwMSw4IEBACiAg
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgYm9v
bCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJv
d3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZS5tbQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhaW5UZXh0UmFuZ2U6OlBsYWlu
VGV4dFJhbmdlKE5TUmFuZ2UgcikKKyAgICA6IHN0YXJ0KHIubG9jYXRpb24pCisgICAgLCBsZW5n
dGgoci5sZW5ndGgpCit7Cit9CisgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3Bl
ZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNwZWFrID0gc3BlYWtB
c1Byb3BlcnR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2
NDIsNiArMzY0MiwxNCBAQAogICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNp
YmxlXTsKIH0KIAorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJh
bmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZworeworICAgIGlmICghW3NlbGYgdXBkYXRl
T2JqZWN0QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVy
biBtX29iamVjdC0+cmVwbGFjZVRleHRJblJhbmdlKHN0cmluZywgUGxhaW5UZXh0UmFuZ2UocmFu
Z2UpKTsKK30KKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0
aW9ucyIpCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmli
dXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogSUdOT1JFX1dBUk5JTkdTX0VORApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjQzOTE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTktMDQtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogU3VwcG9ydCBBUEk6IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6d2l0aFRl
eHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjYz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChyZXBsYWNl
VGV4dEluUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0
SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJh
bmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5S
YW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisKIDIwMTktMDQtMDQgIEFha2FzaCBKYWlu
ICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgRmxha3kgQVBJIFRl
c3QgVGVzdFdlYktpdEFQSS5XZWJLaXQuRm9jdXNUZXh0SW5wdXRDb250ZXh0CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNp
b24gMjQzODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw2ICs4MDYsMjQgQEAKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlcGxh
Y2VUZXh0SW5SYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBKU1N0cmluZ1JlZiB0ZXh0ID0gMDsKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGludCBs
ZW5ndGggPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDMpIHsKKyAgICAgICAgdGV4dCA9
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOwor
ICAgICAgICBwb3NpdGlvbiA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbik7CisgICAgICAgIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBh
cmd1bWVudHNbMl0sIGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3Qp
LT5yZXBsYWNlVGV4dEluUmFuZ2UodGV4dCwgcG9zaXRpb24sIGxlbmd0aCkpOworICAgIGlmICh0
ZXh0KQorICAgICAgICBKU1N0cmluZ1JlbGVhc2UodGV4dCk7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlID0g
MDsKQEAgLTE2MDksNiArMTYyNywxMSBAQAogewogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQogewogICAgIHJldHVy
biAwOwpAQCAtMTkzMSw2ICsxOTU0LDcgQEAKICAgICAgICAgeyAidGV4dE1hcmtlclJhbmdlRm9y
RWxlbWVudCIsIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSIsIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJyZXBsYWNlVGV4dEluUmFuZ2UiLCByZXBsYWNlVGV4dEluUmFuZ2VDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFp
bnNBdHRyaWJ1dGUiLCBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNB
dHRyaWJ1dGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbmRleEZvclRleHRNYXJrZXIi
LCBpbmRleEZvclRleHRNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1RleHRN
YXJrZXJWYWxpZCIsIGlzVGV4dE1hcmtlclZhbGlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9u
IDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw4IEBACiAgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgc2V0U2VsZWN0ZWRWaXNpYmxlVGV4
dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKLSAgICAKKyAgICBib29sIHJl
cGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsK
KwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqLCBib29sIGluY2x1ZGVTcGVsbENoZWNrKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lv
biAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxMSBAQAogICAgIHJldHVy
biBudWxscHRyOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0
SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKQogewogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw2ICs3MCw3IEBACiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlv
bkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250
ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9u
cykKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTooTlNSYW5nZSlyYW5nZSB3aXRo
VGV4dDooTlNTdHJpbmcgKilzdHJpbmc7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5
QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilp
bmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNz
aWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxp
dHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE2MzMsNiAr
MTYzNCwxNCBAQAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAorYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VS
YW5nZShsb2NhdGlvbiwgbGVuZ3RoKSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOnN0cmluZ11dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2
aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzksNyBA
QAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNl
dFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2Uo
SlNTdHJpbmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRU
ZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAko
cmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjA1LDYgKzIwNSw3IEBACiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB2b2lkIHJlc2V0U2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBib29sZWFuIHJlcGxhY2VUZXh0SW5SYW5nZShE
T01TdHJpbmcgc3RyaW5nLCBsb25nIHBvc2l0aW9uLCBsb25nIGxlbmd0aCk7CiAgICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSByYW5nZSk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtl
ckZvckJvdW5kcyhsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAy
NDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ0LDYgKzExNDQs
MTEgQEAKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkK
IHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2
aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiAr
NzQsNyBAQAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQg
ZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRl
cmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChCT09MKWFj
Y2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5n
ICopc3RyaW5nOwogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVl
czooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6
KE5TVUludGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9m
Q2hpbGQ6KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1
dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CkBAIC0xODA2LDYgKzE4MDcsMTQgQEAKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBs
YWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3Ro
KSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnN0cmluZ11dOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0
VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1y
YW5nZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkgQEAKK0hlbGxvQmxvcmcKKyAKK1RoaXMgdGVzdHMgdGhhdCB0aGUg
cmVwbGFjZSB3aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dElu
UmFuZ2UoIkJsdXJiIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFibGUuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmx1cmInCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBs
YWNlVGV4dEluUmFuZ2UoIkJsb3JnIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFi
bGUuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmxvcmcnCitQQVNTIHRleHQucmVwbGFj
ZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogSGVsbG8gYmx1cmInCitQQVNTIHRleHRhcmVhLnJlcGxhY2VUZXh0SW5S
YW5nZSgiYmx1cmIiLCA2LCA1KSBpcyB0cnVlCitQQVNTIHRleHRhcmVhLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBIZWxsbyBibHVyYicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZXBsYWNlLXRleHQtd2l0aC1yYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFu
Z2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBpZD0iYm9keSI+Cis8ZGl2IGlkPSJjb250ZW50Ij4KKworPGRpdiBpZD0iY29udGVudGVk
aXRhYmxlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHJvbGU9InRleHRib3giPkhlbGxvV29ybGQ8
L2Rpdj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dCIgdmFsdWU9IkhlbGxvIHdvcmxkIj4K
Kzx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiPkhlbGxvIHdvcmxkPC90ZXh0YXJlYT4KKworPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPC9kaXY+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIHJlcGxhY2Ugd2l0
aCByYW5nZSBBUEkgZnVuY3Rpb25zIGFzIGV4cGVjdGVkLiIpOworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50ZWRp
dGFibGUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRl
eHRJblJhbmdlKCJCbHVyYiIsIDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRp
dGFibGUuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvQmx1cmInIik7CisKKyAgICAgICAg
Ly8gbm93IHRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gYSBjb250cm9sIGhhcyBmb2N1cworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlIikuZm9jdXMoKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJhbmdlKCJC
bG9yZyIsIDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRpdGFibGUuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvQmxvcmcnIik7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUiKS5ibHVyKCk7CisKKyAgICAgICAgdmFyIHRleHQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCd0ZXh0LnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2
LCA1KScpOworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
SGVsbG8gYmx1cmInIik7CisKKyAgICAgICAgdmFyIHRleHRhcmVhID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpOworICAgICAgICBzaG91
bGRCZVRydWUoJ3RleHRhcmVhLnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KScpOwor
ICAgICAgICBzaG91bGRCZSgidGV4dGFyZWEuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxv
IGJsdXJiJyIpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366835</attachid>
            <date>2019-04-05 13:00:29 -0700</date>
            <delta_ts>2019-04-08 16:18:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18291</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IHRoaXMgcGxhdGZvcm0gQVBJIG9u
IG1hYyB0byBwcm92aWRlIGEgd2F5IHRvIHJlcGxhY2UgYSByYW5nZSBvZiBlZGl0YWJsZSB0ZXh0
LgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJh
bmdlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJhbmdlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eVJlcGxhY2VSYW5nZTp3aXRoVGV4dDpdKToKKwogMjAxOS0wNC0wNCAgU2hhd24gUm9iZXJ0cyAg
PHNyb2JlcnRzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQzODY4LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjc0LDcgKzIyNzQsMzIgQEAKICAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsK
ICAgICByZXR1cm4gZGlzcGF0Y2hBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnQpOwogfQorICAgIAor
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKQoreworICAg
IGlmICghcmVuZGVyZXIoKSB8fCAhaXM8RWxlbWVudD4obm9kZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpyZW5kZXJl
cigpLT5ub2RlKCkpOworCisgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgZWRpdG9yJ3MgaW5zZXJ0
VGV4dCB0byBtaW1pYyB0eXBpbmcgaW50byB0aGUgZmllbGQuCisgICAgLy8gQWxzbyBvbmx5IGRv
IHRoaXMgd2hlbiB0aGUgZmllbGQgaXMgaW4gZWRpdGluZyBtb2RlLgorICAgIGlmIChhdXRvIGZy
YW1lID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAgIGlmIChlbGVt
ZW50LnNob3VsZFVzZUlucHV0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UocmFuZ2UpLmdldCgp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7Cisg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxh
Y2VtZW50U3RyaW5nLCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgRWRpdG9yOjpTbWFy
dFJlcGxhY2U6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KS5zZXRSYW5nZVRleHQocmVwbGFjZW1lbnRTdHJpbmcsIHJhbmdlLnN0
YXJ0LCByYW5nZS5sZW5ndGgsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZGlzcGF0Y2hBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogewogICAgIGlmICghY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lv
biAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywxMCBAQAogICAgICAgICAsIGxl
bmd0aChsKQogICAgIHsgfQogICAgIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4
dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisgICAgCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQogfTsKIApAQCAtNjk3LDYgKzcwMSw4IEBACiAg
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgYm9v
bCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJv
d3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZS5tbQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhaW5UZXh0UmFuZ2U6OlBsYWlu
VGV4dFJhbmdlKE5TUmFuZ2UgcikKKyAgICA6IHN0YXJ0KHIubG9jYXRpb24pCisgICAgLCBsZW5n
dGgoci5sZW5ndGgpCit7Cit9CisgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3Bl
ZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNwZWFrID0gc3BlYWtB
c1Byb3BlcnR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2
NDIsNiArMzY0MiwxNCBAQAogICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNp
YmxlXTsKIH0KIAorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJh
bmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZworeworICAgIGlmICghW3NlbGYgdXBkYXRl
T2JqZWN0QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVy
biBtX29iamVjdC0+cmVwbGFjZVRleHRJblJhbmdlKHN0cmluZywgUGxhaW5UZXh0UmFuZ2UocmFu
Z2UpKTsKK30KKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0
aW9ucyIpCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmli
dXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogSUdOT1JFX1dBUk5JTkdTX0VORApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjQzOTE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTktMDQtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogU3VwcG9ydCBBUEk6IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6d2l0aFRl
eHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjYz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChyZXBsYWNl
VGV4dEluUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0
SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJh
bmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5S
YW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dElu
UmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisKIDIwMTktMDQtMDQgIEFha2FzaCBKYWlu
ICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgRmxha3kgQVBJIFRl
c3QgVGVzdFdlYktpdEFQSS5XZWJLaXQuRm9jdXNUZXh0SW5wdXRDb250ZXh0CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNp
b24gMjQzODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw2ICs4MDYsMjQgQEAKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlcGxh
Y2VUZXh0SW5SYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBKU1N0cmluZ1JlZiB0ZXh0ID0gMDsKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGludCBs
ZW5ndGggPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDMpIHsKKyAgICAgICAgdGV4dCA9
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOwor
ICAgICAgICBwb3NpdGlvbiA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbik7CisgICAgICAgIGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBh
cmd1bWVudHNbMl0sIGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3Qp
LT5yZXBsYWNlVGV4dEluUmFuZ2UodGV4dCwgcG9zaXRpb24sIGxlbmd0aCkpOworICAgIGlmICh0
ZXh0KQorICAgICAgICBKU1N0cmluZ1JlbGVhc2UodGV4dCk7CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIG1hcmtlclJhbmdlID0g
MDsKQEAgLTE2MDksNiArMTYyNywxMSBAQAogewogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
clJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQogewogICAgIHJldHVy
biAwOwpAQCAtMTkzMSw2ICsxOTU0LDcgQEAKICAgICAgICAgeyAidGV4dE1hcmtlclJhbmdlRm9y
RWxlbWVudCIsIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSIsIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJyZXBsYWNlVGV4dEluUmFuZ2UiLCByZXBsYWNlVGV4dEluUmFuZ2VDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFp
bnNBdHRyaWJ1dGUiLCBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNB
dHRyaWJ1dGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbmRleEZvclRleHRNYXJrZXIi
LCBpbmRleEZvclRleHRNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1RleHRN
YXJrZXJWYWxpZCIsIGlzVGV4dE1hcmtlclZhbGlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9u
IDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw4IEBACiAgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJvb2wgc2V0U2VsZWN0ZWRWaXNpYmxlVGV4
dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKLSAgICAKKyAgICBib29sIHJl
cGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsK
KwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UqLCBib29sIGluY2x1ZGVTcGVsbENoZWNrKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lv
biAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxMSBAQAogICAgIHJldHVy
biBudWxscHRyOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0
SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKQogewogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw2ICs3MCw3IEBACiB0eXBlZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlv
bkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyogbm90aWZpY2F0aW9uLCB2b2lkKiBjb250
ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViS2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9u
cykKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTooTlNSYW5nZSlyYW5nZSB3aXRo
VGV4dDooTlNTdHJpbmcgKilzdHJpbmc7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5
QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilp
bmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNz
aWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxp
dHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKQEAgLTE2MzMsNiAr
MTYzNCwxNCBAQAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAorYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VS
YW5nZShsb2NhdGlvbiwgbGVuZ3RoKSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOnN0cmluZ11dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2
aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzksNyBA
QAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2U+IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNl
dFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2Uo
SlNTdHJpbmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlKik7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBlbmRU
ZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAko
cmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjA1LDYgKzIwNSw3IEBACiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB2b2lkIHJlc2V0U2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBib29sZWFuIHJlcGxhY2VUZXh0SW5SYW5nZShE
T01TdHJpbmcgc3RyaW5nLCBsb25nIHBvc2l0aW9uLCBsb25nIGxlbmd0aCk7CiAgICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSByYW5nZSk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtl
ckZvckJvdW5kcyhsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAy
NDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ0LDYgKzExNDQs
MTEgQEAKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQsIGludCkKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkK
IHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2
aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiAr
NzQsNyBAQAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQg
ZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRl
cmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChCT09MKWFj
Y2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5n
ICopc3RyaW5nOwogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVl
czooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6
KE5TVUludGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9m
Q2hpbGQ6KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1
dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CkBAIC0xODA2LDYgKzE4MDcsMTQgQEAKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBs
YWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBpbnQgbG9jYXRpb24sIGludCBsZW5n
dGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3Ro
KSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnN0cmluZ11dOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0
VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1y
YW5nZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkgQEAKK0hlbGxvQmxvcmcKKyAKK1RoaXMgdGVzdHMgdGhhdCB0aGUg
cmVwbGFjZSB3aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dElu
UmFuZ2UoIkJsdXJiIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFibGUuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmx1cmInCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBs
YWNlVGV4dEluUmFuZ2UoIkJsb3JnIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFi
bGUuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmxvcmcnCitQQVNTIHRleHQucmVwbGFj
ZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpIGlzIHRydWUKK1BBU1MgdGV4dC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogSGVsbG8gYmx1cmInCitQQVNTIHRleHRhcmVhLnJlcGxhY2VUZXh0SW5S
YW5nZSgiYmx1cmIiLCA2LCA1KSBpcyB0cnVlCitQQVNTIHRleHRhcmVhLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBIZWxsbyBibHVyYicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZXBsYWNlLXRleHQtd2l0aC1yYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFu
Z2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBpZD0iYm9keSI+Cis8ZGl2IGlkPSJjb250ZW50Ij4KKworPGRpdiBpZD0iY29udGVudGVk
aXRhYmxlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHJvbGU9InRleHRib3giPkhlbGxvV29ybGQ8
L2Rpdj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dCIgdmFsdWU9IkhlbGxvIHdvcmxkIj4K
Kzx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiPkhlbGxvIHdvcmxkPC90ZXh0YXJlYT4KKworPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPC9kaXY+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIHJlcGxhY2Ugd2l0
aCByYW5nZSBBUEkgZnVuY3Rpb25zIGFzIGV4cGVjdGVkLiIpOworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgY29udGVudGVkaXRhYmxlID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50ZWRp
dGFibGUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRl
eHRJblJhbmdlKCJCbHVyYiIsIDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRp
dGFibGUuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvQmx1cmInIik7CisKKyAgICAgICAg
Ly8gbm93IHRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4gYSBjb250cm9sIGhhcyBmb2N1cworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlIikuZm9jdXMoKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCdjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJhbmdlKCJC
bG9yZyIsIDUsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50ZWRpdGFibGUuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvQmxvcmcnIik7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUiKS5ibHVyKCk7CisKKyAgICAgICAgdmFyIHRleHQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCd0ZXh0LnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2
LCA1KScpOworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
SGVsbG8gYmx1cmInIik7CisKKyAgICAgICAgdmFyIHRleHRhcmVhID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0YXJlYSIpOworICAgICAgICBzaG91
bGRCZVRydWUoJ3RleHRhcmVhLnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KScpOwor
ICAgICAgICBzaG91bGRCZSgidGV4dGFyZWEuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxv
IGJsdXJiJyIpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="383294"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366993</attachid>
            <date>2019-04-08 16:18:39 -0700</date>
            <delta_ts>2019-04-08 16:19:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18283</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgU3VwcG9ydCB0aGlzIHBsYXRmb3JtIEFQSSBvbiBt
YWMgdG8gcHJvdmlkZSBhIHdheSB0byByZXBsYWNlIGEgcmFuZ2Ugb2YgZWRpdGFibGUgdGV4dC4K
KworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5n
ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJh
bmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlS
ZXBsYWNlUmFuZ2U6d2l0aFRleHQ6XSk6CisKIDIwMTktMDQtMDQgIFNoYXduIFJvYmVydHMgIDxz
cm9iZXJ0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
Mzg2OC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI3NCw3ICsyMjc0LDM2IEBACiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAg
ICAgcmV0dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KKyAgICAKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAoIXJlbmRlcmVyKCkgfHwgIWlzPEVsZW1lbnQ+KG5vZGUoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqcmVuZGVyZXIo
KS0+bm9kZSgpKTsKKworICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGVkaXRvcidzIGluc2VydFRl
eHQgdG8gbWltaWMgdHlwaW5nIGludG8gdGhlIGZpZWxkLgorICAgIC8vIEFsc28gb25seSBkbyB0
aGlzIHdoZW4gdGhlIGZpZWxkIGlzIGluIGVkaXRpbmcgbW9kZS4KKyAgICBpZiAoYXV0byYgZnJh
bWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LnNob3VsZFVz
ZUlucHV0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2VGb3JQbGFpblRleHRSYW5nZShyYW5nZSkuZ2V0KCksIERPV05TVFJFQU0s
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZy
YW1lLmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFN0cmluZywg
RWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCBy
YW5nZS5zdGFydCwgcmFuZ2UubGVuZ3RoLCAiIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAg
ZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxh
Y2VtZW50U3RyaW5nLCByYW5nZS5zdGFydCwgcmFuZ2UubGVuZ3RoLCAiIik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGlzcGF0Y2hBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGlmICghY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5Mywx
MCBAQAogICAgICAgICAsIGxlbmd0aChsKQogICAgIHsgfQogICAgIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFBsYWluVGV4dFJhbmdlKE5TUmFuZ2Ugcik7CisjZW5kaWYKKyAgICAKICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9CiB9OwogCkBA
IC02OTcsNiArNzAxLDggQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25z
dCBQbGFpblRleHRSYW5nZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSB7IH0KKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBj
b25zdCBQbGFpblRleHRSYW5nZSYpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RCYXNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RCYXNlLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQ
bGFpblRleHRSYW5nZTo6UGxhaW5UZXh0UmFuZ2UoTlNSYW5nZSByKQorICAgIDogc3RhcnQoci5s
b2NhdGlvbikKKyAgICAsIGxlbmd0aChyLmxlbmd0aCkKK3sKK30KKyAgICAKIFN0cmluZyBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzcGVlY2hIaW50QXR0cmlidXRlVmFsdWUoKSBjb25zdAogewogICAg
IGF1dG8gc3BlYWsgPSBzcGVha0FzUHJvcGVydHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzY0Miw2ICszNjQyLDE0IEBACiAgICAgICAgIFtzZWxmIGFjY2Vz
c2liaWxpdHlTY3JvbGxUb1Zpc2libGVdOwogfQogCistIChCT09MKWFjY2Vzc2liaWxpdHlSZXBs
YWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICopc3RyaW5nCit7Cisg
ICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQorICAgICAgICByZXR1cm4g
Tk87CisgICAgCisgICAgcmV0dXJuIG1fb2JqZWN0LT5yZXBsYWNlVGV4dEluUmFuZ2Uoc3RyaW5n
LCBQbGFpblRleHRSYW5nZShyYW5nZSkpOworfQorCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oImRl
cHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVl
OihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiBJR05PUkVf
V0FSTklOR1NfRU5ECkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDM5MTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wNC0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBTdXBwb3J0IEFQSTogYWNjZXNzaWJpbGl0
eVJlcGxhY2VSYW5nZTp3aXRoVGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk2NjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6
CisgICAgICAgIChyZXBsYWNlVGV4dEluUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisKIDIwMTkt
MDQtMDQgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERp
c2FibGUgRmxha3kgQVBJIFRlc3QgVGVzdFdlYktpdEFQSS5XZWJLaXQuRm9jdXNUZXh0SW5wdXRD
b250ZXh0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw2ICs4MDYsMTgg
QEAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIHJlcGxhY2VUZXh0SW5SYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGF1dG8gdGV4dCA9IGFkb3B0
KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICBpbnQgcG9zaXRpb24gPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFd
LCBleGNlcHRpb24pOworICAgIGludCBsZW5ndGggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
YXJndW1lbnRzWzJdLCBleGNlcHRpb24pOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVh
bihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+cmVwbGFjZVRleHRJblJhbmdlKHRl
eHQuZ2V0KCksIHBvc2l0aW9uLCBsZW5ndGgpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIG1hcmtlclJhbmdlID0gMDsKQEAgLTE2MDksNiArMTYyMSwxMSBAQAogewogfQog
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmlu
Z1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKQogewogICAgIHJldHVybiAwOwpAQCAtMTkzMSw2ICsxOTQ4LDcgQEAKICAgICAg
ICAgeyAidGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCIsIHRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIs
IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVz
ZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJyZXBsYWNlVGV4dEluUmFuZ2UiLCByZXBsYWNl
VGV4dEluUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhdHRyaWJ1dGVkU3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUiLCBhdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJpbmRleEZvclRleHRNYXJrZXIiLCBpbmRleEZvclRleHRNYXJrZXJDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJpc1RleHRNYXJrZXJWYWxpZCIsIGlzVGV4dE1hcmtlclZhbGlkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw4
IEBACiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIGJv
b2wgc2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqKTsKLSAgICAKKyAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50
IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBz
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwog
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25z
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqLCBib29sIGluY2x1ZGVTcGVsbENoZWNrKTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc3
LDYgKzQ3NywxMSBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlz
aW9uIDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiB0eXBlZGVmIHZv
aWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0cmluZyog
bm90aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KTsKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2Vi
S2l0QWNjZXNzaWJpbGl0eUFkZGl0aW9ucykKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eVJlcGxhY2VS
YW5nZTooTlNSYW5nZSlyYW5nZSB3aXRoVGV4dDooTlNTdHJpbmcgKilzdHJpbmc7CiAtIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJp
YnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3Vu
dDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAt
IChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAq
KWF0dHJpYnV0ZTsKQEAgLTE2MzMsNiArMTYzNCwxNCBAQAogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFu
Z2UoSlNTdHJpbmdSZWYgc3RyaW5nLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eVJlcGxhY2VSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSB3aXRoVGV4dDpb
TlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnN0cmluZ11dOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3OSw2ICsyNzksNyBAQAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcik7CiAg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlKCk7CiAgICAgdm9pZCByZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAg
Ym9vbCByZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxl
bmd0aCk7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBzdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBlbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRNYXJrZXIp
OwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKTsKICAgICB2b2lkIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICBib29s
ZWFuIHJlcGxhY2VUZXh0SW5SYW5nZShET01TdHJpbmcgc3RyaW5nLCBsb25nIHBvc2l0aW9uLCBs
b25nIGxlbmd0aCk7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwog
ICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CiAgICAgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtlckZvckJvdW5kcyhsb25nIHgsIGxvbmcgeSwgbG9uZyB3
aWR0aCwgbG9uZyBoZWlnaHQpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQ0LDYgKzExNDQsMTEgQEAKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
KyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpT
U3RyaW5nUmVmLCBpbnQsIGludCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
ckZvclBvaW50KGludCB4LCBpbnQgeSkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWRO
b3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwg
dm9pZCogY29udGV4dCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxp
dHlBZGRpdGlvbnMpCistIChCT09MKWFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICopc3RyaW5nOwogLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5T
VUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRl
Z2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CkBA
IC0xODA2LDYgKzE4MDcsMTQgQEAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYgc3RyaW5n
LCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgcmV0dXJuIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVJlcGxhY2VSYW5nZTpOU01h
a2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSB3aXRoVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOnN0cmluZ11dOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisgICAgCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
SW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJh
bmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2Ut
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdHMg
dGhhdCB0aGUgcmVwbGFjZSB3aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnRlZGl0YWJsZS5yZXBs
YWNlVGV4dEluUmFuZ2UoIkJsdXJiIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250ZW50ZWRpdGFi
bGUuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmx1cmInCitQQVNTIGNvbnRlbnRlZGl0
YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2UoIkJsb3JnIiwgNSwgNSkgaXMgdHJ1ZQorUEFTUyBjb250
ZW50ZWRpdGFibGUuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvQmxvcmcnCitQQVNTIHRl
eHQucmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpIGlzIHRydWUKK1BBU1MgdGV4dC5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogSGVsbG8gYmx1cmInCitQQVNTIHRleHRhcmVhLnJlcGxh
Y2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KSBpcyB0cnVlCitQQVNTIHRleHRhcmVhLnN0cmlu
Z1ZhbHVlIGlzICdBWFZhbHVlOiBIZWxsbyBibHVyYicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0
LXdpdGgtcmFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPGRpdiBpZD0i
Y29udGVudCI+CisKKzxkaXYgaWQ9ImNvbnRlbnRlZGl0YWJsZSIgY29udGVudGVkaXRhYmxlPSJ0
cnVlIiByb2xlPSJ0ZXh0Ym94Ij5IZWxsb1dvcmxkPC9kaXY+Cis8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9InRleHQiIHZhbHVlPSJIZWxsbyB3b3JsZCI+Cis8dGV4dGFyZWEgaWQ9InRleHRhcmVhIj5I
ZWxsbyB3b3JsZDwvdGV4dGFyZWE+Cis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IHRoZSByZXBsYWNlIHdpdGggcmFuZ2UgQVBJIGZ1bmN0aW9ucyBhcyBl
eHBlY3RlZC4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgdmFyIGNvbnRlbnRlZGl0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxlIik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgnY29udGVudGVkaXRhYmxlLnJlcGxhY2VUZXh0SW5SYW5nZSgiQmx1cmIiLCA1LCA1KScp
OworICAgICAgICBzaG91bGRCZSgiY29udGVudGVkaXRhYmxlLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBIZWxsb0JsdXJiJyIpOworCisgICAgICAgIC8vIG5vdyB0ZXN0IHdoYXQgaGFwcGVucyB3
aGVuIGEgY29udHJvbCBoYXMgZm9jdXMKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnRlZGl0YWJsZSIpLmZvY3VzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnY29udGVu
dGVkaXRhYmxlLnJlcGxhY2VUZXh0SW5SYW5nZSgiQmxvcmciLCA1LCA1KScpOworICAgICAgICBz
aG91bGRCZSgiY29udGVudGVkaXRhYmxlLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBIZWxsb0Js
b3JnJyIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudGVkaXRhYmxl
IikuYmx1cigpOworCisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgndGV4
dC5yZXBsYWNlVGV4dEluUmFuZ2UoImJsdXJiIiwgNiwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUo
InRleHQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEhlbGxvIGJsdXJiJyIpOworCisgICAgICAg
IHZhciB0ZXh0YXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dGFyZWEiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCd0ZXh0YXJlYS5yZXBsYWNl
VGV4dEluUmFuZ2UoImJsdXJiIiwgNiwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUoInRleHRhcmVh
LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBIZWxsbyBibHVyYiciKTsKKworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu
IjsKKyAgICB9CisKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366994</attachid>
            <date>2019-04-08 16:19:48 -0700</date>
            <delta_ts>2019-04-08 16:22:28 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18281</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgU3VwcG9ydCB0aGlzIHBsYXRmb3JtIEFQSSBvbiBt
YWMgdG8gcHJvdmlkZSBhIHdheSB0byByZXBsYWNlIGEgcmFuZ2Ugb2YgZWRpdGFibGUgdGV4dC4K
KworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5n
ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJh
bmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlS
ZXBsYWNlUmFuZ2U6d2l0aFRleHQ6XSk6CisKIDIwMTktMDQtMDQgIFNoYXduIFJvYmVydHMgIDxz
cm9iZXJ0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
Mzg2OC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI3NCw3ICsyMjc0LDM2IEBACiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAg
ICAgcmV0dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KKyAgICAKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAoIXJlbmRlcmVyKCkgfHwgIWlzPEVsZW1lbnQ+KG5vZGUoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqcmVuZGVyZXIo
KS0+bm9kZSgpKTsKKworICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGVkaXRvcidzIGluc2VydFRl
eHQgdG8gbWltaWMgdHlwaW5nIGludG8gdGhlIGZpZWxkLgorICAgIC8vIEFsc28gb25seSBkbyB0
aGlzIHdoZW4gdGhlIGZpZWxkIGlzIGluIGVkaXRpbmcgbW9kZS4KKyAgICBpZiAoYXV0byYgZnJh
bWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LnNob3VsZFVz
ZUlucHV0TWV0aG9kKCkpIHsKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2VGb3JQbGFpblRleHRSYW5nZShyYW5nZSkuZ2V0KCksIERPV05TVFJFQU0s
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZy
YW1lLmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFN0cmluZywg
RWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudDo6Tm8sIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCBy
YW5nZS5zdGFydCwgcmFuZ2UubGVuZ3RoLCAiIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAg
ZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxh
Y2VtZW50U3RyaW5nLCByYW5nZS5zdGFydCwgcmFuZ2UubGVuZ3RoLCAiIik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGlzcGF0Y2hBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGlmICghY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAyNDM4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5Mywx
MCBAQAogICAgICAgICAsIGxlbmd0aChsKQogICAgIHsgfQogICAgIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFBsYWluVGV4dFJhbmdlKE5TUmFuZ2UpOworI2VuZGlmCisgICAgCiAgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQogfTsKIApAQCAt
Njk3LDYgKzcwMSw4IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3Ry
aW5nJikgeyB9CisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
QmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdEJhc2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxh
aW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJhbmdlKE5TUmFuZ2UgcikKKyAgICA6IHN0YXJ0KHIubG9j
YXRpb24pCisgICAgLCBsZW5ndGgoci5sZW5ndGgpCit7Cit9CisgICAgCiBTdHJpbmcgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c3BlZWNoSGludEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICBh
dXRvIHNwZWFrID0gc3BlYWtBc1Byb3BlcnR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM2NDIsNiArMzY0MiwxNCBAQAogICAgICAgICBbc2VsZiBhY2Nlc3Np
YmlsaXR5U2Nyb2xsVG9WaXNpYmxlXTsKIH0KIAorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFj
ZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZworeworICAg
IGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIAorICAgIHJldHVybiBtX29iamVjdC0+cmVwbGFjZVRleHRJblJhbmdlKHN0cmluZywg
UGxhaW5UZXh0UmFuZ2UocmFuZ2UpKTsKK30KKwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXBy
ZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZToo
aWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogSUdOT1JFX1dB
Uk5JTkdTX0VORApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjQzOTE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDQtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9ydCBBUEk6IGFjY2Vzc2liaWxpdHlS
ZXBsYWNlUmFuZ2U6d2l0aFRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjYzNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgor
ICAgICAgICAocmVwbGFjZVRleHRJblJhbmdlQ2FsbGJhY2spOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UpOgorCiAyMDE5LTA0
LTA0ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIEZsYWt5IEFQSSBUZXN0IFRlc3RXZWJLaXRBUEkuV2ViS2l0LkZvY3VzVGV4dElucHV0Q29u
dGV4dApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDYsNiArODA2LDE4IEBA
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMg
SlNWYWx1ZVJlZiByZXBsYWNlVGV4dEluUmFuZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAzKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBhdXRvIHRleHQgPSBhZG9wdChK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Cisg
ICAgaW50IHBvc2l0aW9uID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwg
ZXhjZXB0aW9uKTsKKyAgICBpbnQgbGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFy
Z3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4o
Y29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnJlcGxhY2VUZXh0SW5SYW5nZSh0ZXh0
LmdldCgpLCBwb3NpdGlvbiwgbGVuZ3RoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGF0dHJp
YnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZUNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKiBtYXJrZXJSYW5nZSA9IDA7CkBAIC0xNjA5LDYgKzE2MjEsMTEgQEAKIHsKIH0KIAor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdS
ZWYsIGludCwgaW50KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikKIHsKICAgICByZXR1cm4gMDsKQEAgLTE5MzEsNiArMTk0OCw3IEBACiAgICAgICAg
IHsgInRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQiLCB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLCBz
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInJlc2V0
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLCByZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVwbGFjZVRleHRJblJhbmdlIiwgcmVwbGFjZVRl
eHRJblJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlIiwgYXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiaW5kZXhGb3JUZXh0TWFya2VyIiwgaW5kZXhGb3JUZXh0TWFya2VyQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiaXNUZXh0TWFya2VyVmFsaWQiLCBpc1RleHRNYXJrZXJWYWxpZENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCShyZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsOCBA
QAogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UoKTsKICAgICB2b2lkIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICBib29s
IHNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Kik7Ci0gICAgCisgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYsIGludCBw
b3NpdGlvbiwgaW50IGxlbmd0aCk7CisKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyhB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgYm9vbCBpbmNsdWRlU3BlbGxDaGVjayk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw2
ICs0NzcsMTEgQEAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYsIGludCwgaW50KQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNl
dFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIHsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lv
biAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQAogdHlwZWRlZiB2b2lk
ICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5v
dGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktp
dEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChCT09MKWFjY2Vzc2liaWxpdHlSZXBsYWNlUmFu
Z2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5nICopc3RyaW5nOwogLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1
dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7
CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOwogLSAo
TlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilh
dHRyaWJ1dGU7CkBAIC0xNjMzLDYgKzE2MzQsMTQgQEAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdl
KEpTU3RyaW5nUmVmIHN0cmluZywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlSZXBsYWNlUmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCkgd2l0aFRleHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzdHJpbmddXTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
IHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksNiArMjc5LDcgQEAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRNYXJrZXIpOwogICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOworICAgIGJv
b2wgcmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmLCBpbnQgcG9zaXRpb24sIGludCBsZW5n
dGgpOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kTWFya2VyKTsK
ICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
KCk7CiAgICAgdm9pZCByZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAgYm9vbGVh
biByZXBsYWNlVGV4dEluUmFuZ2UoRE9NU3RyaW5nIHN0cmluZywgbG9uZyBwb3NpdGlvbiwgbG9u
ZyBsZW5ndGgpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKICAg
ICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIGVuZFRleHRNYXJrZXJGb3JCb3VuZHMobG9uZyB4LCBsb25nIHksIGxvbmcgd2lk
dGgsIGxvbmcgaGVpZ2h0KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQkocmV2aXNpb24gMjQzODE3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTE0NCw2ICsxMTQ0LDExIEBACiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cisg
ICAgCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0
cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJG
b3JQb2ludChpbnQgeCwgaW50IHkpCiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDI0MzgxNykKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90
aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sIHZv
aWQqIGNvbnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5
QWRkaXRpb25zKQorLSAoQk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJh
bmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZzsKIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmls
aXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJ
bnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OwogLSAoTlNVSW50ZWdl
cilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihpZCljaGlsZDsKIC0gKE5TVUludGVnZXIpYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRlOwpAQCAt
MTgwNiw2ICsxODA3LDE0IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmIHN0cmluZywg
aW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6TlNNYWtl
UmFuZ2UobG9jYXRpb24sIGxlbmd0aCkgd2l0aFRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0
cmluZ1JlZjpzdHJpbmddXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJu
IGZhbHNlOworfQorICAgIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCklu
ZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5n
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3RzIHRo
YXQgdGhlIHJlcGxhY2Ugd2l0aCByYW5nZSBBUEkgZnVuY3Rpb25zIGFzIGV4cGVjdGVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZW50ZWRpdGFibGUucmVwbGFj
ZVRleHRJblJhbmdlKCJCbHVyYiIsIDUsIDUpIGlzIHRydWUKK1BBU1MgY29udGVudGVkaXRhYmxl
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBIZWxsb0JsdXJiJworUEFTUyBjb250ZW50ZWRpdGFi
bGUucmVwbGFjZVRleHRJblJhbmdlKCJCbG9yZyIsIDUsIDUpIGlzIHRydWUKK1BBU1MgY29udGVu
dGVkaXRhYmxlLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBIZWxsb0Jsb3JnJworUEFTUyB0ZXh0
LnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1KSBpcyB0cnVlCitQQVNTIHRleHQuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvIGJsdXJiJworUEFTUyB0ZXh0YXJlYS5yZXBsYWNl
VGV4dEluUmFuZ2UoImJsdXJiIiwgNiwgNSkgaXMgdHJ1ZQorUEFTUyB0ZXh0YXJlYS5zdHJpbmdW
YWx1ZSBpcyAnQVhWYWx1ZTogSGVsbG8gYmx1cmInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13
aXRoLXJhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxkaXYgaWQ9ImNv
bnRlbnQiPgorCis8ZGl2IGlkPSJjb250ZW50ZWRpdGFibGUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIgcm9sZT0idGV4dGJveCI+SGVsbG9Xb3JsZDwvZGl2PgorPGlucHV0IHR5cGU9InRleHQiIGlk
PSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gd29ybGQiPgorPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSI+SGVs
bG8gd29ybGQ8L3RleHRhcmVhPgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCB0aGUgcmVwbGFjZSB3aXRoIHJhbmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhw
ZWN0ZWQuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgIHZhciBjb250ZW50ZWRpdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoJ2NvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2UoIkJsdXJiIiwgNSwgNSknKTsK
KyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRlZGl0YWJsZS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogSGVsbG9CbHVyYiciKTsKKworICAgICAgICAvLyBub3cgdGVzdCB3aGF0IGhhcHBlbnMgd2hl
biBhIGNvbnRyb2wgaGFzIGZvY3VzCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250ZW50ZWRpdGFibGUiKS5mb2N1cygpOworICAgICAgICBzaG91bGRCZVRydWUoJ2NvbnRlbnRl
ZGl0YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2UoIkJsb3JnIiwgNSwgNSknKTsKKyAgICAgICAgc2hv
dWxkQmUoImNvbnRlbnRlZGl0YWJsZS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG9CbG9y
ZyciKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJsZSIp
LmJsdXIoKTsKKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOworICAgICAgICBzaG91bGRCZVRydWUoJ3RleHQu
cmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBIZWxsbyBibHVyYiciKTsKKworICAgICAgICB2
YXIgdGV4dGFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInRleHRhcmVhIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgndGV4dGFyZWEucmVwbGFjZVRl
eHRJblJhbmdlKCJibHVyYiIsIDYsIDUpJyk7CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0YXJlYS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG8gYmx1cmInIik7CisKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
CisgICAgfQorCis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366995</attachid>
            <date>2019-04-08 16:22:28 -0700</date>
            <delta_ts>2019-04-08 17:39:56 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18248</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTA0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgQVBJ
OiBhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOndpdGhUZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY2MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgU3VwcG9ydCB0aGlzIHBsYXRmb3JtIEFQSSBvbiBt
YWMgdG8gcHJvdmlkZSBhIHdheSB0byByZXBsYWNlIGEgcmFuZ2Ugb2YgZWRpdGFibGUgdGV4dC4K
KworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRleHQtd2l0aC1yYW5n
ZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJh
bmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYWluVGV4dFJhbmdlOjpQbGFpblRleHRSYW5nZSk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlS
ZXBsYWNlUmFuZ2U6d2l0aFRleHQ6XSk6CisKIDIwMTktMDQtMDQgIFNoYXduIFJvYmVydHMgIDxz
cm9iZXJ0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
Mzg2OC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI3NCw3ICsyMjc0LDM1IEBACiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAg
ICAgcmV0dXJuIGRpc3BhdGNoQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50KTsKIH0KKyAgICAKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAoIXJlbmRlcmVyKCkgfHwgIWlzPEVsZW1lbnQ+KG5vZGUoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqcmVuZGVyZXIo
KS0+bm9kZSgpKTsKKworICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGVkaXRvcidzIGluc2VydFRl
eHQgdG8gbWltaWMgdHlwaW5nIGludG8gdGhlIGZpZWxkLgorICAgIC8vIEFsc28gb25seSBkbyB0
aGlzIHdoZW4gdGhlIGZpZWxkIGlzIGluIGVkaXRpbmcgbW9kZS4KKyAgICBhdXRvJiBmcmFtZSA9
IHJlbmRlcmVyKCktPmZyYW1lKCk7CisgICAgaWYgKGVsZW1lbnQuc2hvdWxkVXNlSW5wdXRNZXRo
b2QoKSkgeworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdl
Rm9yUGxhaW5UZXh0UmFuZ2UocmFuZ2UpLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFN0cmluZywgRWRpdG9yOjpTZWxlY3RSZXBs
YWNlbWVudDo6Tm8sIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObyk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkp
IHsKKyAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0UmFuZ2VU
ZXh0KHJlcGxhY2VtZW50U3RyaW5nLCByYW5nZS5zdGFydCwgcmFuZ2UubGVuZ3RoLCAiIik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVu
dD4oZWxlbWVudCkpIHsKKyAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxl
bWVudCkuc2V0UmFuZ2VUZXh0KHJlcGxhY2VtZW50U3RyaW5nLCByYW5nZS5zdGFydCwgcmFuZ2Uu
bGVuZ3RoLCAiIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGlzcGF0Y2hBY2Nlc3Np
YmxlU2V0VmFsdWVFdmVudChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGlmICgh
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAyNDM4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywxMCBAQAogICAgICAgICAsIGxlbmd0aChsKQogICAgIHsg
fQogICAgIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYWluVGV4dFJhbmdlKE5TUmFuZ2Up
OworI2VuZGlmCisgICAgCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhc3RhcnQg
JiYgIWxlbmd0aDsgfQogfTsKIApAQCAtNjk3LDYgKzcwMSw4IEBACiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgYm9vbCByZXBsYWNlVGV4dElu
UmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKTsKKwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZShmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
KGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0QmFzZS5tbQkocmV2aXNp
b24gMjQzODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdEJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhaW5UZXh0UmFuZ2U6OlBsYWluVGV4dFJhbmdlKE5TUmFu
Z2UgcikKKyAgICA6IHN0YXJ0KHIubG9jYXRpb24pCisgICAgLCBsZW5ndGgoci5sZW5ndGgpCit7
Cit9CisgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3BlZWNoSGludEF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNwZWFrID0gc3BlYWtBc1Byb3BlcnR5KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjQz
ODE3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2NDIsNiArMzY0MiwxNCBA
QAogICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5U2Nyb2xsVG9WaXNpYmxlXTsKIH0KIAorLSAo
Qk9PTClhY2Nlc3NpYmlsaXR5UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhUZXh0OihO
U1N0cmluZyAqKXN0cmluZworeworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0
b3JlXSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVybiBtX29iamVjdC0+cmVw
bGFjZVRleHRJblJhbmdlKHN0cmluZywgUGxhaW5UZXh0UmFuZ2UocmFuZ2UpKTsKK30KKwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCiAtICh2b2lk
KWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyop
YXR0cmlidXRlTmFtZQogSUdOT1JFX1dBUk5JTkdTX0VORApJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzOTE3KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDQtMDQg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3Vw
cG9ydCBBUEk6IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6d2l0aFRleHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjYzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAocmVwbGFjZVRleHRJblJhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdl
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlcGxhY2VUZXh0SW5SYW5nZSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJhbmdlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNl
VGV4dEluUmFuZ2UpOgorCiAyMDE5LTA0LTA0ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIEZsYWt5IEFQSSBUZXN0IFRlc3RXZWJLaXRBUEku
V2ViS2l0LkZvY3VzVGV4dElucHV0Q29udGV4dApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0MzgxNykKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MDYsNiArODA2LDE4IEBACiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiByZXBsYWNlVGV4dEluUmFuZ2VDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisK
KyAgICBhdXRvIHRleHQgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgaW50IHBvc2l0aW9uID0gSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAgICBpbnQgbGVuZ3RoID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
PnJlcGxhY2VUZXh0SW5SYW5nZSh0ZXh0LmdldCgpLCBwb3NpdGlvbiwgbGVuZ3RoKSk7Cit9CisK
IHN0YXRpYyBKU1ZhbHVlUmVmIGF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250
YWluc0F0dHJpYnV0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSA9IDA7CkBAIC0xNjA5
LDYgKzE2MjEsMTEgQEAKIHsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBs
YWNlVGV4dEluUmFuZ2UoSlNTdHJpbmdSZWYsIGludCwgaW50KQoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0
aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKIHsKICAgICByZXR1cm4gMDsKQEAgLTE5
MzEsNiArMTk0OCw3IEBACiAgICAgICAgIHsgInRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQiLCB0
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLCBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiLCByZXNldFNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicmVwbGFj
ZVRleHRJblJhbmdlIiwgcmVwbGFjZVRleHRJblJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRl
IiwgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW5kZXhGb3JUZXh0TWFya2VyIiwgaW5kZXhGb3JU
ZXh0TWFya2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNUZXh0TWFya2VyVmFsaWQi
LCBpc1RleHRNYXJrZXJWYWxpZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAyNDM4MTcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw3ICsyNzcsOCBAQAogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2Ugc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICB2b2lkIHJlc2V0U2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2UoKTsKICAgICBib29sIHNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgCisgICAgYm9vbCByZXBsYWNlVGV4dElu
UmFuZ2UoSlNTdHJpbmdSZWYsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYXR0cmli
dXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Kik7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgYm9v
bCBpbmNsdWRlU3BlbGxDaGVjayk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjQzODE3KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw2ICs0NzcsMTEgQEAKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXBsYWNlVGV4dEluUmFuZ2UoSlNT
dHJpbmdSZWYsIGludCwgaW50KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIHsKIH0K
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAyNDM4MTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAs
NiArNzAsNyBAQAogdHlwZWRlZiB2b2lkICgqQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjayko
aWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlmaWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBp
bnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBZGRpdGlvbnMpCistIChCT09M
KWFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugd2l0aFRleHQ6KE5TU3Ry
aW5nICopc3RyaW5nOwogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZh
bHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291
bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRl
eE9mQ2hpbGQ6KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRy
aWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7CkBAIC0xNjMzLDYgKzE2MzQsMTQgQEAK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVmIHN0cmluZywgaW50IGxvY2F0aW9u
LCBpbnQgbGVuZ3RoKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVy
biBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlSZXBsYWNlUmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRp
b24sIGxlbmd0aCkgd2l0aFRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzdHJp
bmddXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDI0Mzgx
NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5LDcgQEAKICAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gdGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKiBlbmRNYXJrZXIpOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlPiBzZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZSgpOworICAgIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKEpTU3RyaW5nUmVm
LCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqKTsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IGVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZv
ckJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDI0
MzgxNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUs
NyBAQAogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgZW5kTWFya2VyKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
IHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CiAgICAgdm9pZCByZXNldFNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlKCk7CisgICAgYm9vbGVhbiByZXBsYWNlVGV4dEluUmFuZ2UoRE9NU3RyaW5nIHN0
cmluZywgbG9uZyBwb3NpdGlvbiwgbG9uZyBsZW5ndGgpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIHN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlIHJhbmdlKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBlbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFu
Z2UpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGVuZFRleHRNYXJrZXJGb3JCb3VuZHMo
bG9uZyB4LCBsb25nIHksIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjQzODE3KQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE0NCw2ICsxMTQ0LDExIEBACiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlcGxhY2VUZXh0SW5SYW5nZShKU1N0cmluZ1JlZiwgaW50LCBpbnQpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCiB7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDI0Mzgx
NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIHR5
cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5T
U3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2Jq
ZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQorLSAoQk9PTClhY2Nlc3NpYmlsaXR5
UmVwbGFjZVJhbmdlOihOU1JhbmdlKXJhbmdlIHdpdGhUZXh0OihOU1N0cmluZyAqKXN0cmluZzsK
IC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5n
ICopYXR0cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2Vy
KW1heENvdW50OwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihpZClj
aGlsZDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5T
U3RyaW5nICopYXR0cmlidXRlOwpAQCAtMTgwNiw2ICsxODA3LDE0IEBACiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVwbGFjZVRleHRJblJh
bmdlKEpTU3RyaW5nUmVmIHN0cmluZywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlSZXBsYWNlUmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCkgd2l0aFRleHQ6
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzdHJpbmddXTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZXBsYWNlLXRleHQtd2l0aC1yYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UtZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Jl
cGxhY2UtdGV4dC13aXRoLXJhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE3IEBACitUaGlzIHRlc3RzIHRoYXQgdGhlIHJlcGxhY2Ugd2l0aCByYW5nZSBBUEkgZnVu
Y3Rpb25zIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJhbmdlKCJCbHVyYiIsIDUsIDUpIGlzIHRy
dWUKK1BBU1MgY29udGVudGVkaXRhYmxlLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBIZWxsb0Js
dXJiJworUEFTUyBjb250ZW50ZWRpdGFibGUucmVwbGFjZVRleHRJblJhbmdlKCJCbG9yZyIsIDUs
IDUpIGlzIHRydWUKK1BBU1MgY29udGVudGVkaXRhYmxlLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVl
OiBIZWxsb0Jsb3JnJworUEFTUyB0ZXh0LnJlcGxhY2VUZXh0SW5SYW5nZSgiYmx1cmIiLCA2LCA1
KSBpcyB0cnVlCitQQVNTIHRleHQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEhlbGxvIGJsdXJi
JworUEFTUyB0ZXh0YXJlYS5yZXBsYWNlVGV4dEluUmFuZ2UoImJsdXJiIiwgNiwgNSkgaXMgdHJ1
ZQorUEFTUyB0ZXh0YXJlYS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogSGVsbG8gYmx1cmInCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVwbGFjZS10ZXh0LXdpdGgtcmFuZ2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZXBsYWNlLXRl
eHQtd2l0aC1yYW5nZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3JlcGxhY2UtdGV4dC13aXRoLXJhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IGlkPSJib2R5Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8ZGl2IGlkPSJjb250ZW50ZWRpdGFi
bGUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgcm9sZT0idGV4dGJveCI+SGVsbG9Xb3JsZDwvZGl2
PgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8gd29ybGQiPgorPHRl
eHRhcmVhIGlkPSJ0ZXh0YXJlYSI+SGVsbG8gd29ybGQ8L3RleHRhcmVhPgorPC9kaXY+CisKKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgcmVwbGFjZSB3aXRoIHJh
bmdlIEFQSSBmdW5jdGlvbnMgYXMgZXhwZWN0ZWQuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBjb250ZW50ZWRpdGFibGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnRlZGl0YWJs
ZSIpOworICAgICAgICBzaG91bGRCZVRydWUoJ2NvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dElu
UmFuZ2UoIkJsdXJiIiwgNSwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRlZGl0YWJs
ZS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG9CbHVyYiciKTsKKworICAgICAgICAvLyBu
b3cgdGVzdCB3aGF0IGhhcHBlbnMgd2hlbiBhIGNvbnRyb2wgaGFzIGZvY3VzCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50ZWRpdGFibGUiKS5mb2N1cygpOworICAgICAg
ICBzaG91bGRCZVRydWUoJ2NvbnRlbnRlZGl0YWJsZS5yZXBsYWNlVGV4dEluUmFuZ2UoIkJsb3Jn
IiwgNSwgNSknKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRlZGl0YWJsZS5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogSGVsbG9CbG9yZyciKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnRlZGl0YWJsZSIpLmJsdXIoKTsKKworICAgICAgICB2YXIgdGV4dCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOworICAg
ICAgICBzaG91bGRCZVRydWUoJ3RleHQucmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUp
Jyk7CisgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBIZWxs
byBibHVyYiciKTsKKworICAgICAgICB2YXIgdGV4dGFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHRhcmVhIik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgndGV4dGFyZWEucmVwbGFjZVRleHRJblJhbmdlKCJibHVyYiIsIDYsIDUpJyk7CisgICAg
ICAgIHNob3VsZEJlKCJ0ZXh0YXJlYS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogSGVsbG8gYmx1
cmInIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgfQorCis8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>