<?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>164209</bug_id>
          
          <creation_ts>2016-10-30 11:24:10 -0700</creation_ts>
          <short_desc>Holding down a key to choose an accented character should fire &quot;insertReplacementText&quot; input events</short_desc>
          <delta_ts>2016-10-31 09:21:55 -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>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246247</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 11:24:10 -0700</bug_when>
    <thetext>Holding down a key to choose an accented character should fire &quot;insertReplacementText&quot; input events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246248</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 11:29:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/29019305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246295</commentid>
    <comment_count>2</comment_count>
      <attachid>293373</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 17:15:06 -0700</bug_when>
    <thetext>Created attachment 293373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246296</commentid>
    <comment_count>3</comment_count>
      <attachid>293373</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 17:17:02 -0700</bug_when>
    <thetext>Comment on attachment 293373
Patch

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

&gt; LayoutTests/fast/events/input-event-insert-replacement-expected.txt:1
&gt; +To manually test this, do things.

Whoops, forgot to remove this!

&gt; LayoutTests/fast/events/input-event-insert-replacement.html:4
&gt; +    &lt;p&gt;To manually test this, do things.&lt;/p&gt;

Whoops, forgot to remove this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246297</commentid>
    <comment_count>4</comment_count>
      <attachid>293374</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 17:20:33 -0700</bug_when>
    <thetext>Created attachment 293374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246327</commentid>
    <comment_count>5</comment_count>
      <attachid>293384</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 19:13:32 -0700</bug_when>
    <thetext>Created attachment 293384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246328</commentid>
    <comment_count>6</comment_count>
      <attachid>293385</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 19:17:48 -0700</bug_when>
    <thetext>Created attachment 293385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246331</commentid>
    <comment_count>7</comment_count>
      <attachid>293385</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 21:03:38 -0700</bug_when>
    <thetext>Comment on attachment 293385
Patch

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

I’m going to say r=me but I see some things that seem a bit wrong to me.

&gt; Source/WebCore/editing/TypingCommand.cpp:150
&gt; +    , m_currentHTMLTextToInsert(createMarkup(Text::create(document, textToInsert)))

Seems quite roundabout to create a text element just to turn it into markup. Can we slightly refactor the markup code so we can do this in a way that doesn’t involve creating and destroying a DOM node?

&gt; Source/WebCore/editing/TypingCommand.cpp:494
&gt; +    m_currentHTMLTextToInsert = createMarkup(Text::create(document(), text));

Ditto.

&gt; Source/WebCore/editing/TypingCommand.h:149
&gt; +    String m_currentPlainTextToInsert;
&gt; +    String m_currentHTMLTextToInsert;

This really seems strange. I don’t understand why we need m_currentHTMLTextToInsert. Is this about non-breaking spaces or something?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:294
&gt; +- (void)_insertText:(id)string replacementRange:(NSRange)replacementRange;

Other methods in this file have availability macros. This should have one too. But also, is this really the right technique? What is the philosophy behind adding this?

&gt; Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:120
&gt; +    void insertText(JSStringRef, long location, long length);

These should be int. IDL long maps to C++ int, not C++ long.

&gt; Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm:40
&gt; +    return [NSString stringWithCString:toWTFString(toWK(string)).utf8().data() encoding:NSUTF8StringEncoding];

The trip through WK, UTF-8, and C strings is unnecessarily complicated and inefficient. A simpler and more efficient way to write this function is:

    return (NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, string)).autorelease();

Also, no reason to mention the argument type in the name of the function, since C++ has overloading, so you can just call it nsString I suppose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246339</commentid>
    <comment_count>8</comment_count>
      <attachid>293385</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-30 21:45:36 -0700</bug_when>
    <thetext>Comment on attachment 293385
Patch

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

Thank you for looking at this! I&apos;ll hold off on landing until I find a better way to compute the html text without having to create and parse a text node.

&gt;&gt; Source/WebCore/editing/TypingCommand.cpp:150
&gt;&gt; +    , m_currentHTMLTextToInsert(createMarkup(Text::create(document, textToInsert)))
&gt; 
&gt; Seems quite roundabout to create a text element just to turn it into markup. Can we slightly refactor the markup code so we can do this in a way that doesn’t involve creating and destroying a DOM node?

Yes -- all we should really need to do here is escape special characters like &apos;&lt;&apos; or &apos;&gt;&apos;. I&apos;ll find a better way to do this.

&gt;&gt; Source/WebCore/editing/TypingCommand.cpp:494
&gt;&gt; +    m_currentHTMLTextToInsert = createMarkup(Text::create(document(), text));
&gt; 
&gt; Ditto.

I&apos;ll find a way to do this that does not involve creating/destroying and parsing a Text node.

&gt;&gt; Source/WebCore/editing/TypingCommand.h:149
&gt;&gt; +    String m_currentHTMLTextToInsert;
&gt; 
&gt; This really seems strange. I don’t understand why we need m_currentHTMLTextToInsert. Is this about non-breaking spaces or something?

This string corresponds to the contents of DataTransfer&apos;s &quot;text/html&quot;. m_currentHTMLTextToInsert will not be necessary once I come up with a cleaner way to get the &quot;text/html&quot; representation that doesn&apos;t involve creating and destroying a text node.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:294
&gt;&gt; +- (void)_insertText:(id)string replacementRange:(NSRange)replacementRange;
&gt; 
&gt; Other methods in this file have availability macros. This should have one too. But also, is this really the right technique? What is the philosophy behind adding this?

I&apos;ll add an availability macro. I originally tried to write a test that holds down the &apos;a&apos; key and selects one of the accented characters (by pressing 1 afterwards or clicking the popover) but instead decided to mock the first call into WK code (i.e. insertText:replacementRange:) that is fired when selecting an accented character. My reasoning was that it would be less susceptible to flakiness due to UI changes or configuration changes on the bots, and might allow us to test other codepaths that call try to insert replacement text from the UI process via this method call.

&gt;&gt; Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:120
&gt;&gt; +    void insertText(JSStringRef, long location, long length);
&gt; 
&gt; These should be int. IDL long maps to C++ int, not C++ long.

I see -- fixed.

&gt;&gt; Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm:40
&gt;&gt; +    return [NSString stringWithCString:toWTFString(toWK(string)).utf8().data() encoding:NSUTF8StringEncoding];
&gt; 
&gt; The trip through WK, UTF-8, and C strings is unnecessarily complicated and inefficient. A simpler and more efficient way to write this function is:
&gt; 
&gt;     return (NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, string)).autorelease();
&gt; 
&gt; Also, no reason to mention the argument type in the name of the function, since C++ has overloading, so you can just call it nsString I suppose.

That&apos;s much cleaner! Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246416</commentid>
    <comment_count>9</comment_count>
      <attachid>293418</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 07:39:18 -0700</bug_when>
    <thetext>Created attachment 293418
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246423</commentid>
    <comment_count>10</comment_count>
      <attachid>293418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 08:14:56 -0700</bug_when>
    <thetext>Comment on attachment 293418
Patch for landing

Clearing flags on attachment: 293418

Committed r208143: &lt;http://trac.webkit.org/changeset/208143&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293373</attachid>
            <date>2016-10-30 17:15:06 -0700</date>
            <delta_ts>2016-10-30 17:20:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164209-20161030171111.patch</filename>
            <type>text/plain</type>
            <size>26510</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkzOGIyNjJkNDRlODI3
NTFlMWE2NWQ1YWZmYjA4YTc5NjUwNzdiZS4uMzdiMjQzZjIyNzUxZjQxYmFjOTA4MjNlMDFhN2M1
NTVhM2NlYzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEhvbGRpbmcgZG93
biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNob3VsZCBmaXJlICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGb3IgVHlwaW5nQ29tbWFuZHMgdGhhdCBjb3JyZXNwb25kIHRvICJpbnNlcnRSZXBsYWNlbWVu
dFRleHQiIGlucHV0VHlwZXMsIHZlbmQgZGF0YVRyYW5zZmVycyBmb3IgcmVzdWx0aW5nCisgICAg
ICAgIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgaWYgdGhlIGVkaXRlZCBhcmVhIGlzIG5v
dCBhbiBpbnB1dCBmaWVsZCBvciB0ZXh0YXJlYS4gVG8gZG8gdGhpcywgcmVuYW1lCisgICAgICAg
IG1fY3VycmVudFRleHRUb0luc2VydCB0byBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgYW5k
IGFkZCBtX2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0LCB3aGljaCBpcyB0aGUgSFRNTC0KKyAgICAg
ICAgZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBwbGFpbiB0ZXh0IHRvIGluc2VydCwgYW5kIHVzZSB0
aGVzZSB0byBjcmVhdGUgYW5kIHJldHVybiBhIERhdGFUcmFuc2ZlciBmcm9tCisgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKS4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaDoKKwogMjAxNi0xMC0yOSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gRml4IHRyYW5zZm9ybS1vcmlnaW4gYW5k
IHBlcnNwZWN0aXZlLW9yaWdpbiB0byBwYXJzZSBhcyBzaG9ydGhhbmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDM1NDlkM2VjNjQyYjY0MjkwMDg1NTE2NGM2OTFkMjIzNzdkMWFkYS4uZDI3ZDJkNTc2MDQyMmQ5
NWZkNWRjMWI3MWI2ZWExYWY2MTJjNWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNo
b3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHJlcGxhY2luZyB0ZXh0LCBjYWxsIEVkaXRvcjo6aW5zZXJ0
VGV4dCB3aXRoIHRoZSBjb3JyZWN0IFRleHRFdmVudElucHV0VHlwZSBzbyB0aGF0IFdlYkNvcmUg
d2lsbCBrbm93IHRvCisgICAgICAgIHVzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQgd2hl
biBjcmVhdGluZyBhbmQgYXBwbHlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVHlwaW5nQ29tbWFuZC4g
QWRkaXRpb25hbCBtaW5vcgorICAgICAgICBjaGFuZ2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgdGVz
dGluZyByZXBsYWNlbWVudCB0ZXh0IGluc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydFRleHQ6
cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKIDIwMTYtMTAt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIGNs
YXNzZXMgaW4gdGhlIEhUTUwgZGlyZWN0b3J5IGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDllODAyYTQ2
MDM0MjI0OTBjOTM5YTQ4MTJmNTM5YTRmYjZlOTVmMGIuLjRjNTI0OTcxNWViZDk4ZWM2Yzk2MmI0
ZTE3Mzg3Mzc0NzZhZmUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQyLDkgKzQzLDExIEBACiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgor
I2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Myw3ICsx
NDYsOCBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwg
RVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgIDogVGV4dEluc2VydGlvbkJhc2VD
b21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24p
KQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0
KHRleHRUb0luc2VydCkKLSAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQp
CisgICAgLCBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCisgICAgLCBt
X2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0KGNyZWF0ZU1hcmt1cChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIHRleHRUb0luc2VydCkpKQogICAgICwgbV9vcGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAg
ICwgbV9zZWxlY3RJbnNlcnRlZFRleHQob3B0aW9ucyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAg
ICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQpAQCAtNDA2LDE1ICs0MTAs
MjQgQEAgU3RyaW5nIFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OgotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50
OgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFBlbmRpbmdDb21wb3NpdGlvbjoKICAg
ICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRGaW5hbENvbXBvc2l0aW9uOgotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50VGV4dFRvSW5zZXJ0OworICAgICAgICByZXR1cm4gbV9jdXJyZW50UGxh
aW5UZXh0VG9JbnNlcnQ7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6Cisg
ICAgICAgIHJldHVybiBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgPyBtX2N1cnJlbnRQ
bGFpblRleHRUb0luc2VydCA6IFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKICAgICB9CiB9CiAKK1Jl
ZlB0cjxEYXRhVHJhbnNmZXI+IFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIo
KSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudChtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgbV9jdXJyZW50SFRNTFRleHRU
b0luc2VydCk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKIHsK
ICAgICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5nIHNlcGFyYXRlbHkg
KHNlZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgpAQCAtNDc3LDcg
KzQ5MCw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5n
KEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogCiBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxB
ZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdlPiYm
IHJhbmdlKQogewotICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7CisgICAgbV9jdXJy
ZW50UGxhaW5UZXh0VG9JbnNlcnQgPSB0ZXh0OworICAgIG1fY3VycmVudEhUTUxUZXh0VG9JbnNl
cnQgPSBjcmVhdGVNYXJrdXAoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQpKTsKICAgICBt
X2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29t
bWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0
aW9uKTsKIAogICAgIGlmICghc2hvdWxkRGVmZXJXaWxsQXBwbHlDb21tYW5kVW50aWxBZGRpbmdU
eXBpbmdDb21tYW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4
IGI5NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAuLjM3MDgwMDc4YjViZmI2
M2ZkNjczNDQ4OTZiNjcxMDg1OTgxZjA4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbnB1
dEV2ZW50VHlwZU5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBpbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxh
YmxlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25JZkRp
ZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKFR5cGluZ0NvbW1hbmQqLCBGcmFtZSopOwpAQCAt
MTQ0LDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgRVR5cGluZ0NvbW1hbmQgbV9jb21tYW5kVHlw
ZTsKICAgICBFZGl0QWN0aW9uIG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb247CiAgICAgU3RyaW5n
IG1fdGV4dFRvSW5zZXJ0OwotICAgIFN0cmluZyBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CisgICAg
U3RyaW5nIG1fY3VycmVudFBsYWluVGV4dFRvSW5zZXJ0OworICAgIFN0cmluZyBtX2N1cnJlbnRI
VE1MVGV4dFRvSW5zZXJ0OwogICAgIGJvb2wgbV9vcGVuRm9yTW9yZVR5cGluZzsKICAgICBib29s
IG1fc2VsZWN0SW5zZXJ0ZWRUZXh0OwogICAgIGJvb2wgbV9zbWFydERlbGV0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZGZj
Yzg5Y2E2YWQ2Y2VhZWEzMDliMWZjYjAxMzQ5MGE2OWQwOS4uZmU0NDMxNzk5MGIxNDlhZmRiMjk4
MzNlZTU4YzI3Y2MzOTIzZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ2NTAsNiArNDY1MCwxMSBAQCAtICh2b2lkKV9oYW5k
bGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTooQk9PTCloYXNBY3RpdmVTZXNz
aW9uIHRpdGxlOgogewogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KIH0KKworLSAo
dm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVw
bGFjZW1lbnRSYW5nZQoreworICAgIFtzZWxmIGluc2VydFRleHQ6c3RyaW5nIHJlcGxhY2VtZW50
UmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAt
ICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClv
cmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggN2UyZTYyNzgyNzhhOGY0ZTNmNmUwYzkzMmFhZDc3OTQwZjMx
ZjFkMC4uZWM3MDM0NmNjOGFlY2YzYmJiNDgzMzA0M2Q2N2U5Y2Y0Yjk5NGU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTI5MCw2ICsyOTAsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1l
ZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3Nob3VsZFJlcXVlc3RDYW5kaWRhdGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpKTsKIC0gKHZvaWQpX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfaGFuZGxlQWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZSBkdXJhdGlvbjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihk
b3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwor
CistICh2b2lkKV9pbnNlcnRUZXh0OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5n
ZSlyZXBsYWNlbWVudFJhbmdlOwogI2VuZGlmCiAKIC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dG
bG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggODQ5YjNhMjY2ZTM4M2MwNmQ3MThkZDZhMzA4YWEzNjg1NDhlZDM2Ny4u
ZDA5MDAxNTc5OWFlOTE0M2I4MjYxMzExNjk0YmRlN2FlMWM1YzZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDYyNSwxMSArNDYyNSwx
MyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKKyAgICBib29sIHJl
cGxhY2VzVGV4dCA9IGZhbHNlOwogICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2Nh
dGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFu
Z2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8+KGVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbykpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkgewogICAgICAgICAgICAg
VGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNo
cm9ub3VzbHkobV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBz
dXBwcmVzc1NlbGVjdGlvblVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC00NjM5LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbgogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMg
aW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1w
bGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4K
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyKTsKKyAgICAg
ICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyLCByZXBsYWNlc1RleHQg
PyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwMzFiYTFkZGVkYTYwZTY2ZTNlMGI5MTliYTA3ZmRjNjE1ODYyZjExLi4wNDAzZmMxYWUx
NDExOWQ2NDEwMzMxODI1OGFiYjk2NjUzMTM0MDcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTYtMTAtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSG9sZGluZyBk
b3duIGEga2V5IHRvIGNob29zZSBhbiBhY2NlbnRlZCBjaGFyYWN0ZXIgc2hvdWxkIGZpcmUgImlu
c2VydFJlcGxhY2VtZW50VGV4dCIgaW5wdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MDE5MzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgdGVzdCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBvbiBN
YWMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBob2xkaW5nIGRvd24gYSB2b3dlbCBrZXkgKGUuZy4K
KyAgICAgICAgJ2EnKSB0byBicmluZyB1cCB0aGUgbWVudSBjb250YWluaW5nIGFjY2VudGVkIHZl
cnNpb24gb2YgdGhlIGNoYXJhY3RlciwgdGhlbiBzZWxlY3RpbmcgYW4gYWNjZW50ZWQgY2hhcmFj
dGVyIHRvCisgICAgICAgIGluc2VydCBpbiBwbGFjZSBvZiB0aGUgdHlwZWQgY2hhcmFjdGVyLiBU
aGlzIGlzIGV4cG9zZWQgdmlhIFVJU2NyaXB0Q29udHJvbGxlci5pbnNlcnRUZXh0LCB3aGljaCB0
YWtlcyBhIHN0cmluZworICAgICAgICBhbmQgYW4gaW5zZXJ0aW9uIHJhbmdlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisKKyAgICAg
ICAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNhbGxiYWNrIGFyZ3VtZW50IHRvIGluc2VydFRleHQs
IHNpbmNlIFVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCBpcyBzeW5jaHJvbm91cyBpbgor
ICAgICAgICB0aGUgVUkgcHJvY2Vzcy4gVGhlIHRlc3RzIGVuZCB3aGVuIGNvcnJlc3BvbmRpbmcg
aW5wdXQgZXZlbnRzIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGluc2VydFRleHQgaGF2ZSBiZWVuIHJl
Y2VpdmVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2Vzcy4gUGxlYXNlIHNlZSB0aGUgbmV3IGxh
eW91dCB0ZXN0cyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpuc1N0cmluZ0Zy
b21KU1N0cmluZyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4
dCk6CisKIDIwMTYtMTAtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIHNob3VsZCBub3QgYmUgc29mdC1s
aW5raW5nIFVJS2l0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQppbmRleCA1ZWFjOGQ4N2FlOGY4MTM2MmUyNTJiNGMxNDAyMmQ0MTg5NGQ3
YzMwLi4wZTczNjU5ZjUyNmJmMjI0Y2IzNmViOTk5OTdmOGE1Yjc1ODY2NmNlIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTIx
NSw2ICsyMTUsMTAgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25S
YW5nZVZpZXdSZWN0cygpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBsb25nLCBsb25nKQorewor
fQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA1NmUyMDc3YTRiMmEyMGMx
ZGI5MWRjOWExMGJkZGU1ZjIyY2M2NDBiLi4yOGMwMTc3YWExMjdlNTQ4ZjRjZjZkMTkwNDQwMjc1
ZjE1OWMyMDhiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTQzLDYgKzQzLDEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1JlZiwgbG9uZywgbG9uZykKK3sK
K30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJ
U2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggMmVjOTQ5ODU1ZGFmODhkZWY3NGIyOTYwZjM1MjM5
OTkwMzlkNTU4OC4uMzBmNjE3ZmUyZTZjYzUyMDVlMmMzYjk2OTRkMDYwMjliZjMyNzNjYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3Mv
VUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0xNTYsNSArMTU2
LDcgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgb2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAvLyBBbiBhcnJheSBvZiBvYmpl
Y3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMu
CiAKKyAgICB2b2lkIGluc2VydFRleHQoRE9NU3RyaW5nIHRleHQsIGxvbmcgbG9jYXRpb24sIGxv
bmcgbGVuZ3RoKTsKKwogICAgIHZvaWQgdWlTY3JpcHRDb21wbGV0ZShET01TdHJpbmcgcmVzdWx0
KTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGQ2ZDc5NDY1MDVkN2Y3NDcwMzA0ZGJh
MGNkYWY5OTRlZTVkYzQ4MDcuLmNjNmY3YmJiZTE1NGNmNDE4MDhkZTUxYzc0M2QwODdhNmUzMzY5
ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgog
ICAgIAogICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3Q7CiAK
KyAgICB2b2lkIGluc2VydFRleHQoSlNTdHJpbmdSZWYsIGxvbmcgbG9jYXRpb24sIGxvbmcgbGVu
Z3RoKTsKKwogICAgIHZvaWQgdWlTY3JpcHRDb21wbGV0ZShKU1N0cmluZ1JlZiByZXN1bHQpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tCmluZGV4IGMxNTllZjJkZTcwMGMyMDk0ZTZmYzU1ODM5ZjU5OTZlMDQy
OWZhNzUuLjc2MmYxMjZhMDIxMDYyZTBiMmQ4YjdjYzUyMDg3ZWNhZTk0YzNkYmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
QEAgLTQ5Miw2ICs0OTIsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtQ2xl
YXJBbGxDYWxsYmFja3MoKQogICAgIHdlYlZpZXcuZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2sgPSBu
aWw7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVm
LCBsb25nLCBsb25nKQoreworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggNGY2Y2NlYmE3ZDNmYjQwOTg1YTA2MjE3MjBjYjhhMWMwZWIyNDc1ZC4uYjIxM2ExZjQ2
MTIwMzM4NzY0NDI1ZmQ4MDMwOTUwOTZhZGNmOTkyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtMjYsMTAgKzI2LDIw
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udHJvbGxlci5oIgog
CisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5o
IgorI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKK3N0YXRpYyBOU1N0cmluZyAqbnNT
dHJpbmdGcm9tSlNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9XVEZTdHJpbmcodG9XSyhzdHJpbmcpKS51dGY4KCku
ZGF0YSgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKK30KKwogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5z
aWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFj
aywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CkBAIC00MSw0ICs1MSwxMyBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9
KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYg
dGV4dCwgbG9uZyBsb2NhdGlvbiwgbG9uZyBsZW5ndGgpCit7CisgICAgaWYgKGxvY2F0aW9uID09
IC0xKQorICAgICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CisKKyAgICBhdXRvKiB3ZWJWaWV3
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmll
dygpOworICAgIFt3ZWJWaWV3IF9pbnNlcnRUZXh0Om5zU3RyaW5nRnJvbUpTU3RyaW5nKHRleHQp
IHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldOworfQorCiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmQ0NGJmYWQ4ZmIyZWQzNDhjOTMxYTdlNzlmOTNiOWJhZTAzMGYxYi4uMDA3NTIw
MTM5Yjg4NmMxMDAwZjI0YjlkZDhjZDc1OTBiOGNkYzMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVy
IHNob3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIDIgbmV3IGxheW91dCB0ZXN0cyB0byB2ZXJpZnkgdGhh
dCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBmaXJlcyBpbnB1dCBldmVudHMgb2YgaW5wdXRU
eXBlCisgICAgICAgICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGluc3RlYWQgb2YgdGhlIGdlbmVy
aWMgImluc2VydFRleHQiLCBhbmQgdGhhdCBjYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgb24gdGhl
CisgICAgICAgIGJlZm9yZWlucHV0IGV2ZW50IHByZXZlbnRzIHRleHQgZnJvbSBiZWluZyBpbnNl
cnRlZC4gQWxzbyBjaGVja3MgdGhhdCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBpbgorICAg
ICAgICBjb250ZW50ZWRpdGFibGUgYXJlYXMgY2F1c2VzIHRoZSBkYXRhVHJhbnNmZXIgYXR0cmli
dXRlIHRvIGJlIHBvcHVsYXRlZCwgYW5kIHRoYXQgdGhlIGRhdGEgYXR0cmlidXRlIGlzIG51bGwu
CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVw
bGFjZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZv
cmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxh
Y2VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTYtMTAtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0ZXN0aGFybmVzcy5qcy90ZXN0aGFybmVzc3JlcG9ydC5qcyB1bm5lY2Vz
c2FyeSBjb3BpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmOTVhMGI4NDlhOWEwMTMzOWUyZGM2ZjZlNGFiYWY5MDFl
ZWYzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OSBAQAorVG8gbWFudWFsbHkgdGVzdCB0aGlzLCBkbyB0aGluZ3MuCisKK2EKK1R5cGluZyAnYScu
Li4KKyhlZGl0YWJsZSk6IHR5cGU9YmVmb3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBk
YXRhPWBhYCwgZGF0YVRyYW5zZmVyPWBwbGFpbjoiYSIsIGh0bWw6ImEiYAorKGVkaXRhYmxlKTog
dHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFRleHQsIGRhdGE9YGFgLCBkYXRhVHJhbnNmZXI9
YHBsYWluOiJhIiwgaHRtbDoiYSJgCitBdHRlbXB0aW5nIHRvIHJlcGxhY2UgJ2EnIHdpdGggJ2In
Li4uCisoZWRpdGFibGUpOiB0eXBlPWJlZm9yZWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFj
ZW1lbnRUZXh0LCBkYXRhPWBudWxsYCwgZGF0YVRyYW5zZmVyPWBwbGFpbjoiYiIsIGh0bWw6ImIi
YAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJl
dmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jl
Zm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdk
MTg1OWRhNmJjNjZiMzQzMGQxZTE1YzZiZWJlZGNlMDRlYzNiYjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVw
bGFjZW1lbnQuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+CisgICAgPHA+VG8gbWFudWFsbHkgdGVzdCB0aGlzLCBkbyB0aGluZ3MuPC9wPgorICAg
IDxkaXYgaWQ9ImVkaXRhYmxlIiBvbmJlZm9yZWlucHV0PWhhbmRsZUlucHV0RXZlbnQoZXZlbnQp
IG9uaW5wdXQ9aGFuZGxlSW5wdXRFdmVudChldmVudCkgY29udGVudGVkaXRhYmxlPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgICAgICBsZXQgd3JpdGUgPSBzID0+IG91dHB1dC5pbm5lckhUTUwgKz0gcyAr
ICI8YnI+IjsKKyAgICAgICAgdmFyIHByb2dyZXNzID0gMDsKKyAgICAgICAgZWRpdGFibGUuZm9j
dXMoKTsKKworICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyICYmIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAgICAgICB3
cml0ZSgiVHlwaW5nICdhJy4uLiIpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURv
d24oImEiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiQXR0ZW1wdGluZyB0byByZXBsYWNlICdh
JyB3aXRoICdiJy4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQo
Z2V0VUlTY3JpcHQoKSwgKHJlc3VsdCkgPT4gaW5jcmVtZW50UHJvZ3Jlc3MoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cml0ZSgiVG8gbWFudWFsbHkg
dGVzdCwgcHJlc3MgYW5kIGhvbGQgZG93biAnYScgYW5kIHNlbGVjdCBvbmUgb2YgdGhlIGFjY2Vu
dGVkIGNoYXJhY3RlcnMuIik7CisgICAgICAgICAgICB3cml0ZSgiWW91IHNob3VsZCBvYnNlcnZl
IHRoYXQgdGhlIHJlcGxhY2VtZW50IGFjY2VudGVkIGNoYXJhY3RlciBkb2VzIG5vdCByZXBsYWNl
ICdhJy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudFByb2dyZXNz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3Jlc3MrKzsKKyAgICAgICAgICAgIGlmIChw
cm9ncmVzcyA9PSAyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXRFdmVudChldmVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgd3JpdGUoYCgke2V2ZW50LnRhcmdldC5pZH0pOiB0eXBlPSR7
ZXZlbnQudHlwZX0sIGlucHV0VHlwZT0ke2V2ZW50LmlucHV0VHlwZX0sIGRhdGE9XGAke2V2ZW50
LmRhdGF9XGAsIGRhdGFUcmFuc2Zlcj1cYHBsYWluOiIke2V2ZW50LmRhdGFUcmFuc2Zlci5nZXRE
YXRhKCd0ZXh0L3BsYWluJyl9IiwgaHRtbDoiJHtldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgn
dGV4dC9odG1sJyl9IlxgYCk7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAi
aW5zZXJ0UmVwbGFjZW1lbnRUZXh0IikgeworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiYiIsIDAsIDEpOworICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9
KSgpO2AKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1YTk1MDJlZWRmMDdmMzEwOTM5ZWY0NzNiNGIzYmIxNmE0OTRhYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNl
cnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RvIG1hbnVhbGx5
IHRlc3QgdGhpcywgZG8gdGhpbmdzLgorCisKK1R5cGluZyAnYScuLi4KKyhlZGl0YWJsZSk6IHR5
cGU9YmVmb3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRhPWBhYCwgZGF0YVRyYW5z
ZmVyPWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFRleHQs
IGRhdGE9YGFgLCBkYXRhVHJhbnNmZXI9YG51bGxgCitUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlz
IG5vdzogYQorCitSZXBsYWNpbmcgJ2EnIHdpdGggJ2InLi4uCisoZWRpdGFibGUpOiB0eXBlPWJl
Zm9yZWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFjZW1lbnRUZXh0LCBkYXRhPWBiYCwgZGF0
YVRyYW5zZmVyPWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2Vy
dFJlcGxhY2VtZW50VGV4dCwgZGF0YT1gYmAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKK1RoZSB2YWx1
ZSBvZiB0aGUgaW5wdXQgaXMgbm93OiBiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDgwMzA5OTQ3ZjlhYjQ4MDdjOTk4YTQ1M2Y3MDMzZmRkZmZlOTIxOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNl
bWVudC5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKyAgICA8cD5UbyBtYW51YWxseSB0ZXN0IHRoaXMsIGRvIHRoaW5ncy48L3A+CisgICAgPGlu
cHV0IGlkPSJlZGl0YWJsZSIgb25iZWZvcmVpbnB1dD1sb2dJbnB1dEV2ZW50KGV2ZW50KSBvbmlu
cHV0PWxvZ0lucHV0RXZlbnQoZXZlbnQpPjwvaW5wdXQ+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48
L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3
cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICB2YXIg
cHJvZ3Jlc3MgPSAwOworICAgICAgICBlZGl0YWJsZS5mb2N1cygpOworCisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIgJiYgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAgICAgIHdyaXRlKCJUeXBpbmcgJ2EnLi4uIik7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiYSIpOworICAgICAgICAgICAg
ICAgIHdyaXRlKGBUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlzIG5vdzogJHtlZGl0YWJsZS52YWx1
ZX1gKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiIik7CisgICAgICAgICAgICAgICAgd3JpdGUo
IlJlcGxhY2luZyAnYScgd2l0aCAnYicuLi4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIChyZXN1bHQpID0+IGluY3JlbWVudFByb2dyZXNz
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3JpdGUo
IlRvIG1hbnVhbGx5IHRlc3QsIHByZXNzIGFuZCBob2xkIGRvd24gJ2EnIGFuZCBzZWxlY3Qgb25l
IG9mIHRoZSBhY2NlbnRlZCBjaGFyYWN0ZXJzLiIpOworICAgICAgICAgICAgd3JpdGUoIllvdSBz
aG91bGQgb2JzZXJ2ZSBhIHBhaXIgb2YgYmVmb3JlaW5wdXQvaW5wdXQgZXZlbnRzIGZvciBib3Ro
ICdhJyBhbmQgdGhlIHJlcGxhY2VtZW50IGFjY2VudGVkIGNoYXJhY3Rlci4iKTsKKyAgICAgICAg
ICAgIHdyaXRlKCJJbXBvcnRhbnRseSwgdGhlIGlucHV0VHlwZSBvZiB0aGUgbGFzdCB0d28gZXZl
bnRzIHNob3VsZCBiZSAnaW5zZXJ0UmVwbGFjZW1lbnRUZXh0Jy4iKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudFByb2dyZXNzKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcHJvZ3Jlc3MrKzsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzcyAhPSA1KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgd3JpdGUoYFRoZSB2YWx1ZSBvZiB0aGUgaW5w
dXQgaXMgbm93OiAke2VkaXRhYmxlLnZhbHVlfWApOworICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2dJbnB1dEV2ZW50
KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB3cml0ZShgKCR7ZXZlbnQudGFyZ2V0Lmlk
fSk6IHR5cGU9JHtldmVudC50eXBlfSwgaW5wdXRUeXBlPSR7ZXZlbnQuaW5wdXRUeXBlfSwgZGF0
YT1cYCR7ZXZlbnQuZGF0YX1cYCwgZGF0YVRyYW5zZmVyPVxgJHtldmVudC5kYXRhVHJhbnNmZXJ9
XGBgKTsKKyAgICAgICAgICAgIGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBgCisgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLmluc2VydFRleHQoImIiLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgfSkoKTtgCisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMTg1ZmJkYzRhM2Q5Y2YyNzg0ZTFkYjIwY2NmZjQyOTllZTMyM2JjNi4uYTRmNTVl
MDgyMzMyMGYwN2JiMDE1Y2NhMjU5ODBhY2IyM2RmMzJiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIwMiw2ICsx
MjAyLDcgQEAgZmFzdC9ldmVudHMvZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9mcmFtZS10YWItZm9jdXMuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9ldmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2VsLmh0bWwg
WyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZHJhZy1hbmQtZHJvcC5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW5zZXJ0LWJ5LWRyb3Au
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlw
aW5nLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTEyMTIsNiArMTIxMyw3IEBAIGZhc3QvZXZlbnRzL2lu
cHV0LWV2ZW50cy1pbWUtcmVjb21wb3NpdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50
cy9pbnB1dC1ldmVudHMtaW1lLWNvbXBvc2l0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZl
bnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1yaWNoLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBd
CiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtc3BlbGwtY2hlY2tpbmctZGF0YXRyYW5zZmVyLmh0
bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1y
ZXBsYWNlbWVudC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZl
bnRzLXByZXZlbnQtZGVmYXVsdC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtZXZlbnRzLXByZXZlbnQtZGVmYXVsdC1pbi10ZXh0ZmllbGQuaHRtbCBbIEZhaWx1cmUg
XQogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LWV2ZW50cy1kaWZmZXJlbnQtc3RhcnQtZW5kLWVs
ZW1lbnRzLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBjZTAzN2IzYTIyYzk0Y2NkYjcwMGIxYzdjN2JhNDUzMTc5
YzZkYWVkLi43MTJiMWJiODFiNTZhYTY2ZTE1ODhlZDVmNjc4N2IzZWFkZWFlODUzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NCw2ICs4
NCwxMCBAQCBmYXN0L2Zvcm1zL2ZpbGUvb3Blbi1maWxlLXBhbmVsLmh0bWwgWyBTa2lwIF0KICMg
V0sxIGFuZCBXSzIgbW91c2Vtb3ZlIGV2ZW50cyBhcmUgc3VidGx5IGRpZmZlcmVudCBpbiB3YXlz
IHRoYXQgYnJlYWsgdGhpcyB0ZXN0IG9uIFdLMS4KIGZhc3QvZXZlbnRzL2dob3N0bHktbW91c2Vt
b3Zlcy1pbi1zdWJmcmFtZS5odG1sIFsgU2tpcCBdCiAKKyMgVGVzdCBzdXBwb3J0IGZvciBpbnNl
cnRpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gV0sxLgor
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwg
WyBTa2lwIF0KK2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1s
IFsgU2tpcCBdCisKICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQg
Zm9yIFdLMSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXN0
cmVhbQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293374</attachid>
            <date>2016-10-30 17:20:33 -0700</date>
            <delta_ts>2016-10-30 19:13:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164209-20161030171637.patch</filename>
            <type>text/plain</type>
            <size>26344</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkzOGIyNjJkNDRlODI3
NTFlMWE2NWQ1YWZmYjA4YTc5NjUwNzdiZS4uMzdiMjQzZjIyNzUxZjQxYmFjOTA4MjNlMDFhN2M1
NTVhM2NlYzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEhvbGRpbmcgZG93
biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNob3VsZCBmaXJlICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGb3IgVHlwaW5nQ29tbWFuZHMgdGhhdCBjb3JyZXNwb25kIHRvICJpbnNlcnRSZXBsYWNlbWVu
dFRleHQiIGlucHV0VHlwZXMsIHZlbmQgZGF0YVRyYW5zZmVycyBmb3IgcmVzdWx0aW5nCisgICAg
ICAgIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgaWYgdGhlIGVkaXRlZCBhcmVhIGlzIG5v
dCBhbiBpbnB1dCBmaWVsZCBvciB0ZXh0YXJlYS4gVG8gZG8gdGhpcywgcmVuYW1lCisgICAgICAg
IG1fY3VycmVudFRleHRUb0luc2VydCB0byBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgYW5k
IGFkZCBtX2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0LCB3aGljaCBpcyB0aGUgSFRNTC0KKyAgICAg
ICAgZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBwbGFpbiB0ZXh0IHRvIGluc2VydCwgYW5kIHVzZSB0
aGVzZSB0byBjcmVhdGUgYW5kIHJldHVybiBhIERhdGFUcmFuc2ZlciBmcm9tCisgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKS4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaDoKKwogMjAxNi0xMC0yOSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gRml4IHRyYW5zZm9ybS1vcmlnaW4gYW5k
IHBlcnNwZWN0aXZlLW9yaWdpbiB0byBwYXJzZSBhcyBzaG9ydGhhbmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDM1NDlkM2VjNjQyYjY0MjkwMDg1NTE2NGM2OTFkMjIzNzdkMWFkYS4uZDI3ZDJkNTc2MDQyMmQ5
NWZkNWRjMWI3MWI2ZWExYWY2MTJjNWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNo
b3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHJlcGxhY2luZyB0ZXh0LCBjYWxsIEVkaXRvcjo6aW5zZXJ0
VGV4dCB3aXRoIHRoZSBjb3JyZWN0IFRleHRFdmVudElucHV0VHlwZSBzbyB0aGF0IFdlYkNvcmUg
d2lsbCBrbm93IHRvCisgICAgICAgIHVzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQgd2hl
biBjcmVhdGluZyBhbmQgYXBwbHlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVHlwaW5nQ29tbWFuZC4g
QWRkaXRpb25hbCBtaW5vcgorICAgICAgICBjaGFuZ2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgdGVz
dGluZyByZXBsYWNlbWVudCB0ZXh0IGluc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydFRleHQ6
cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKIDIwMTYtMTAt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIGNs
YXNzZXMgaW4gdGhlIEhUTUwgZGlyZWN0b3J5IGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDllODAyYTQ2
MDM0MjI0OTBjOTM5YTQ4MTJmNTM5YTRmYjZlOTVmMGIuLjRjNTI0OTcxNWViZDk4ZWM2Yzk2MmI0
ZTE3Mzg3Mzc0NzZhZmUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQyLDkgKzQzLDExIEBACiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgor
I2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Myw3ICsx
NDYsOCBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwg
RVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgIDogVGV4dEluc2VydGlvbkJhc2VD
b21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24p
KQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0
KHRleHRUb0luc2VydCkKLSAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQp
CisgICAgLCBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCisgICAgLCBt
X2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0KGNyZWF0ZU1hcmt1cChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIHRleHRUb0luc2VydCkpKQogICAgICwgbV9vcGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAg
ICwgbV9zZWxlY3RJbnNlcnRlZFRleHQob3B0aW9ucyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAg
ICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQpAQCAtNDA2LDE1ICs0MTAs
MjQgQEAgU3RyaW5nIFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OgotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50
OgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFBlbmRpbmdDb21wb3NpdGlvbjoKICAg
ICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRGaW5hbENvbXBvc2l0aW9uOgotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50VGV4dFRvSW5zZXJ0OworICAgICAgICByZXR1cm4gbV9jdXJyZW50UGxh
aW5UZXh0VG9JbnNlcnQ7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6Cisg
ICAgICAgIHJldHVybiBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgPyBtX2N1cnJlbnRQ
bGFpblRleHRUb0luc2VydCA6IFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKICAgICB9CiB9CiAKK1Jl
ZlB0cjxEYXRhVHJhbnNmZXI+IFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIo
KSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudChtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgbV9jdXJyZW50SFRNTFRleHRU
b0luc2VydCk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKIHsK
ICAgICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5nIHNlcGFyYXRlbHkg
KHNlZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgpAQCAtNDc3LDcg
KzQ5MCw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5n
KEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogCiBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxB
ZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdlPiYm
IHJhbmdlKQogewotICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7CisgICAgbV9jdXJy
ZW50UGxhaW5UZXh0VG9JbnNlcnQgPSB0ZXh0OworICAgIG1fY3VycmVudEhUTUxUZXh0VG9JbnNl
cnQgPSBjcmVhdGVNYXJrdXAoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQpKTsKICAgICBt
X2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29t
bWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0
aW9uKTsKIAogICAgIGlmICghc2hvdWxkRGVmZXJXaWxsQXBwbHlDb21tYW5kVW50aWxBZGRpbmdU
eXBpbmdDb21tYW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4
IGI5NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAuLjM3MDgwMDc4YjViZmI2
M2ZkNjczNDQ4OTZiNjcxMDg1OTgxZjA4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbnB1
dEV2ZW50VHlwZU5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBpbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxh
YmxlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25JZkRp
ZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKFR5cGluZ0NvbW1hbmQqLCBGcmFtZSopOwpAQCAt
MTQ0LDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgRVR5cGluZ0NvbW1hbmQgbV9jb21tYW5kVHlw
ZTsKICAgICBFZGl0QWN0aW9uIG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb247CiAgICAgU3RyaW5n
IG1fdGV4dFRvSW5zZXJ0OwotICAgIFN0cmluZyBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CisgICAg
U3RyaW5nIG1fY3VycmVudFBsYWluVGV4dFRvSW5zZXJ0OworICAgIFN0cmluZyBtX2N1cnJlbnRI
VE1MVGV4dFRvSW5zZXJ0OwogICAgIGJvb2wgbV9vcGVuRm9yTW9yZVR5cGluZzsKICAgICBib29s
IG1fc2VsZWN0SW5zZXJ0ZWRUZXh0OwogICAgIGJvb2wgbV9zbWFydERlbGV0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZGZj
Yzg5Y2E2YWQ2Y2VhZWEzMDliMWZjYjAxMzQ5MGE2OWQwOS4uZmU0NDMxNzk5MGIxNDlhZmRiMjk4
MzNlZTU4YzI3Y2MzOTIzZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ2NTAsNiArNDY1MCwxMSBAQCAtICh2b2lkKV9oYW5k
bGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTooQk9PTCloYXNBY3RpdmVTZXNz
aW9uIHRpdGxlOgogewogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KIH0KKworLSAo
dm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVw
bGFjZW1lbnRSYW5nZQoreworICAgIFtzZWxmIGluc2VydFRleHQ6c3RyaW5nIHJlcGxhY2VtZW50
UmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAt
ICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClv
cmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggN2UyZTYyNzgyNzhhOGY0ZTNmNmUwYzkzMmFhZDc3OTQwZjMx
ZjFkMC4uZWM3MDM0NmNjOGFlY2YzYmJiNDgzMzA0M2Q2N2U5Y2Y0Yjk5NGU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTI5MCw2ICsyOTAsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1l
ZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3Nob3VsZFJlcXVlc3RDYW5kaWRhdGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpKTsKIC0gKHZvaWQpX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfaGFuZGxlQWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZSBkdXJhdGlvbjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihk
b3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwor
CistICh2b2lkKV9pbnNlcnRUZXh0OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5n
ZSlyZXBsYWNlbWVudFJhbmdlOwogI2VuZGlmCiAKIC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dG
bG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggODQ5YjNhMjY2ZTM4M2MwNmQ3MThkZDZhMzA4YWEzNjg1NDhlZDM2Ny4u
ZDA5MDAxNTc5OWFlOTE0M2I4MjYxMzExNjk0YmRlN2FlMWM1YzZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDYyNSwxMSArNDYyNSwx
MyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKKyAgICBib29sIHJl
cGxhY2VzVGV4dCA9IGZhbHNlOwogICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2Nh
dGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFu
Z2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8+KGVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbykpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkgewogICAgICAgICAgICAg
VGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNo
cm9ub3VzbHkobV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBz
dXBwcmVzc1NlbGVjdGlvblVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC00NjM5LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbgogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMg
aW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1w
bGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4K
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyKTsKKyAgICAg
ICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyLCByZXBsYWNlc1RleHQg
PyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwMzFiYTFkZGVkYTYwZTY2ZTNlMGI5MTliYTA3ZmRjNjE1ODYyZjExLi4wNDAzZmMxYWUx
NDExOWQ2NDEwMzMxODI1OGFiYjk2NjUzMTM0MDcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTYtMTAtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSG9sZGluZyBk
b3duIGEga2V5IHRvIGNob29zZSBhbiBhY2NlbnRlZCBjaGFyYWN0ZXIgc2hvdWxkIGZpcmUgImlu
c2VydFJlcGxhY2VtZW50VGV4dCIgaW5wdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MDE5MzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgdGVzdCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBvbiBN
YWMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBob2xkaW5nIGRvd24gYSB2b3dlbCBrZXkgKGUuZy4K
KyAgICAgICAgJ2EnKSB0byBicmluZyB1cCB0aGUgbWVudSBjb250YWluaW5nIGFjY2VudGVkIHZl
cnNpb24gb2YgdGhlIGNoYXJhY3RlciwgdGhlbiBzZWxlY3RpbmcgYW4gYWNjZW50ZWQgY2hhcmFj
dGVyIHRvCisgICAgICAgIGluc2VydCBpbiBwbGFjZSBvZiB0aGUgdHlwZWQgY2hhcmFjdGVyLiBU
aGlzIGlzIGV4cG9zZWQgdmlhIFVJU2NyaXB0Q29udHJvbGxlci5pbnNlcnRUZXh0LCB3aGljaCB0
YWtlcyBhIHN0cmluZworICAgICAgICBhbmQgYW4gaW5zZXJ0aW9uIHJhbmdlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisKKyAgICAg
ICAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNhbGxiYWNrIGFyZ3VtZW50IHRvIGluc2VydFRleHQs
IHNpbmNlIFVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCBpcyBzeW5jaHJvbm91cyBpbgor
ICAgICAgICB0aGUgVUkgcHJvY2Vzcy4gVGhlIHRlc3RzIGVuZCB3aGVuIGNvcnJlc3BvbmRpbmcg
aW5wdXQgZXZlbnRzIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGluc2VydFRleHQgaGF2ZSBiZWVuIHJl
Y2VpdmVkCisgICAgICAgIGluIHRoZSB3ZWIgcHJvY2Vzcy4gUGxlYXNlIHNlZSB0aGUgbmV3IGxh
eW91dCB0ZXN0cyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpuc1N0cmluZ0Zy
b21KU1N0cmluZyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4
dCk6CisKIDIwMTYtMTAtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIHNob3VsZCBub3QgYmUgc29mdC1s
aW5raW5nIFVJS2l0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQppbmRleCA1ZWFjOGQ4N2FlOGY4MTM2MmUyNTJiNGMxNDAyMmQ0MTg5NGQ3
YzMwLi4wZTczNjU5ZjUyNmJmMjI0Y2IzNmViOTk5OTdmOGE1Yjc1ODY2NmNlIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTIx
NSw2ICsyMTUsMTAgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25S
YW5nZVZpZXdSZWN0cygpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBsb25nLCBsb25nKQorewor
fQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA1NmUyMDc3YTRiMmEyMGMx
ZGI5MWRjOWExMGJkZGU1ZjIyY2M2NDBiLi4yOGMwMTc3YWExMjdlNTQ4ZjRjZjZkMTkwNDQwMjc1
ZjE1OWMyMDhiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTQzLDYgKzQzLDEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1JlZiwgbG9uZywgbG9uZykKK3sK
K30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJ
U2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggMmVjOTQ5ODU1ZGFmODhkZWY3NGIyOTYwZjM1MjM5
OTkwMzlkNTU4OC4uMzBmNjE3ZmUyZTZjYzUyMDVlMmMzYjk2OTRkMDYwMjliZjMyNzNjYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3Mv
VUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0xNTYsNSArMTU2
LDcgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgb2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAvLyBBbiBhcnJheSBvZiBvYmpl
Y3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMu
CiAKKyAgICB2b2lkIGluc2VydFRleHQoRE9NU3RyaW5nIHRleHQsIGxvbmcgbG9jYXRpb24sIGxv
bmcgbGVuZ3RoKTsKKwogICAgIHZvaWQgdWlTY3JpcHRDb21wbGV0ZShET01TdHJpbmcgcmVzdWx0
KTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGQ2ZDc5NDY1MDVkN2Y3NDcwMzA0ZGJh
MGNkYWY5OTRlZTVkYzQ4MDcuLmNjNmY3YmJiZTE1NGNmNDE4MDhkZTUxYzc0M2QwODdhNmUzMzY5
ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTcsNiArMTE3LDggQEAgcHVibGljOgog
ICAgIAogICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3Q7CiAK
KyAgICB2b2lkIGluc2VydFRleHQoSlNTdHJpbmdSZWYsIGxvbmcgbG9jYXRpb24sIGxvbmcgbGVu
Z3RoKTsKKwogICAgIHZvaWQgdWlTY3JpcHRDb21wbGV0ZShKU1N0cmluZ1JlZiByZXN1bHQpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tCmluZGV4IGMxNTllZjJkZTcwMGMyMDk0ZTZmYzU1ODM5ZjU5OTZlMDQy
OWZhNzUuLjc2MmYxMjZhMDIxMDYyZTBiMmQ4YjdjYzUyMDg3ZWNhZTk0YzNkYmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
QEAgLTQ5Miw2ICs0OTIsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtQ2xl
YXJBbGxDYWxsYmFja3MoKQogICAgIHdlYlZpZXcuZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2sgPSBu
aWw7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVm
LCBsb25nLCBsb25nKQoreworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggNGY2Y2NlYmE3ZDNmYjQwOTg1YTA2MjE3MjBjYjhhMWMwZWIyNDc1ZC4uYjIxM2ExZjQ2
MTIwMzM4NzY0NDI1ZmQ4MDMwOTUwOTZhZGNmOTkyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtMjYsMTAgKzI2LDIw
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udHJvbGxlci5oIgog
CisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5o
IgorI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKK3N0YXRpYyBOU1N0cmluZyAqbnNT
dHJpbmdGcm9tSlNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9XVEZTdHJpbmcodG9XSyhzdHJpbmcpKS51dGY4KCku
ZGF0YSgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKK30KKwogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5z
aWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFj
aywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CkBAIC00MSw0ICs1MSwxMyBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9
KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYg
dGV4dCwgbG9uZyBsb2NhdGlvbiwgbG9uZyBsZW5ndGgpCit7CisgICAgaWYgKGxvY2F0aW9uID09
IC0xKQorICAgICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7CisKKyAgICBhdXRvKiB3ZWJWaWV3
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmll
dygpOworICAgIFt3ZWJWaWV3IF9pbnNlcnRUZXh0Om5zU3RyaW5nRnJvbUpTU3RyaW5nKHRleHQp
IHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0aCldOworfQorCiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmQ0NGJmYWQ4ZmIyZWQzNDhjOTMxYTdlNzlmOTNiOWJhZTAzMGYxYi4uMDA3NTIw
MTM5Yjg4NmMxMDAwZjI0YjlkZDhjZDc1OTBiOGNkYzMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVy
IHNob3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIDIgbmV3IGxheW91dCB0ZXN0cyB0byB2ZXJpZnkgdGhh
dCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBmaXJlcyBpbnB1dCBldmVudHMgb2YgaW5wdXRU
eXBlCisgICAgICAgICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGluc3RlYWQgb2YgdGhlIGdlbmVy
aWMgImluc2VydFRleHQiLCBhbmQgdGhhdCBjYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgb24gdGhl
CisgICAgICAgIGJlZm9yZWlucHV0IGV2ZW50IHByZXZlbnRzIHRleHQgZnJvbSBiZWluZyBpbnNl
cnRlZC4gQWxzbyBjaGVja3MgdGhhdCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBpbgorICAg
ICAgICBjb250ZW50ZWRpdGFibGUgYXJlYXMgY2F1c2VzIHRoZSBkYXRhVHJhbnNmZXIgYXR0cmli
dXRlIHRvIGJlIHBvcHVsYXRlZCwgYW5kIHRoYXQgdGhlIGRhdGEgYXR0cmlidXRlIGlzIG51bGwu
CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVw
bGFjZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZv
cmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxh
Y2VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTYtMTAtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0ZXN0aGFybmVzcy5qcy90ZXN0aGFybmVzc3JlcG9ydC5qcyB1bm5lY2Vz
c2FyeSBjb3BpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNjYyODhjZjhkZmRhNzUzYjNhMjM4MGVlNDNkNDE1Y2M1
NjdiOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorYQorVHlwaW5nICdhJy4uLgorKGVkaXRhYmxlKTogdHlwZT1iZWZvcmVpbnB1dCwgaW5w
dXRUeXBlPWluc2VydFRleHQsIGRhdGE9YGFgLCBkYXRhVHJhbnNmZXI9YHBsYWluOiJhIiwgaHRt
bDoiYSJgCisoZWRpdGFibGUpOiB0eXBlPWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0VGV4dCwgZGF0
YT1gYWAsIGRhdGFUcmFuc2Zlcj1gcGxhaW46ImEiLCBodG1sOiJhImAKK0F0dGVtcHRpbmcgdG8g
cmVwbGFjZSAnYScgd2l0aCAnYicuLi4KKyhlZGl0YWJsZSk6IHR5cGU9YmVmb3JlaW5wdXQsIGlu
cHV0VHlwZT1pbnNlcnRSZXBsYWNlbWVudFRleHQsIGRhdGE9YG51bGxgLCBkYXRhVHJhbnNmZXI9
YHBsYWluOiJiIiwgaHRtbDoiYiJgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmNiYmVmYzRlNGQ5YmQ5OTI5NDM0MWNlNTQxMWFiYjVmZGVjNjk2
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1
dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJlZGl0YWJsZSIgb25iZWZv
cmVpbnB1dD1oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KSBvbmlucHV0PWhhbmRsZUlucHV0RXZlbnQo
ZXZlbnQpIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgbGV0IHdyaXRl
ID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAgIHZhciBwcm9n
cmVzcyA9IDA7CisgICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7CisKKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlR5cGluZyAnYScuLi4iKTsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIik7CisgICAgICAgICAgICAgICAg
d3JpdGUoIkF0dGVtcHRpbmcgdG8gcmVwbGFjZSAnYScgd2l0aCAnYicuLi4iKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIChyZXN1bHQpID0+
IGluY3JlbWVudFByb2dyZXNzKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgd3JpdGUoIlRvIG1hbnVhbGx5IHRlc3QsIHByZXNzIGFuZCBob2xkIGRvd24g
J2EnIGFuZCBzZWxlY3Qgb25lIG9mIHRoZSBhY2NlbnRlZCBjaGFyYWN0ZXJzLiIpOworICAgICAg
ICAgICAgd3JpdGUoIllvdSBzaG91bGQgb2JzZXJ2ZSB0aGF0IHRoZSByZXBsYWNlbWVudCBhY2Nl
bnRlZCBjaGFyYWN0ZXIgZG9lcyBub3QgcmVwbGFjZSAnYScuIik7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBpbmNyZW1lbnRQcm9ncmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHByb2dyZXNzKys7CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPT0gMikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGhhbmRsZUlucHV0RXZlbnQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRl
KGAoJHtldmVudC50YXJnZXQuaWR9KTogdHlwZT0ke2V2ZW50LnR5cGV9LCBpbnB1dFR5cGU9JHtl
dmVudC5pbnB1dFR5cGV9LCBkYXRhPVxgJHtldmVudC5kYXRhfVxgLCBkYXRhVHJhbnNmZXI9XGBw
bGFpbjoiJHtldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dC9wbGFpbicpfSIsIGh0bWw6
IiR7ZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvaHRtbCcpfSJcYGApOworICAgICAg
ICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIpIHsK
KyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAg
IGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBg
CisgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
Lmluc2VydFRleHQoImIiLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlT
Y3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgfSkoKTtgCisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVwbGFj
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQt
aW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2NkYWIzOGEwNDlj
ZDFhMjUzNzQwOTZkNmU2MmRiNDIyYzFhYmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACisKK1R5cGluZyAnYScuLi4KKyhlZGl0YWJsZSk6IHR5cGU9YmVm
b3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRhPWBhYCwgZGF0YVRyYW5zZmVyPWBu
dWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFRleHQsIGRhdGE9
YGFgLCBkYXRhVHJhbnNmZXI9YG51bGxgCitUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlzIG5vdzog
YQorCitSZXBsYWNpbmcgJ2EnIHdpdGggJ2InLi4uCisoZWRpdGFibGUpOiB0eXBlPWJlZm9yZWlu
cHV0LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFjZW1lbnRUZXh0LCBkYXRhPWBiYCwgZGF0YVRyYW5z
ZmVyPWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFJlcGxh
Y2VtZW50VGV4dCwgZGF0YT1gYmAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKK1RoZSB2YWx1ZSBvZiB0
aGUgaW5wdXQgaXMgbm93OiBiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU0
YmM1NTg3MTNlMDI4MjkwM2ZmNWM2ODMwOTY5MmUzN2M0ZWRhZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5o
dG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAg
ICA8aW5wdXQgaWQ9ImVkaXRhYmxlIiBvbmJlZm9yZWlucHV0PWxvZ0lucHV0RXZlbnQoZXZlbnQp
IG9uaW5wdXQ9bG9nSW5wdXRFdmVudChldmVudCk+PC9pbnB1dD4KKyAgICA8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAg
bGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAg
IHZhciBwcm9ncmVzcyA9IDA7CisgICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7CisKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlR5cGluZyAnYScu
Li4iKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIik7CisgICAgICAg
ICAgICAgICAgd3JpdGUoYFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgaXMgbm93OiAke2VkaXRhYmxl
LnZhbHVlfWApOworICAgICAgICAgICAgICAgIHdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICB3
cml0ZSgiUmVwbGFjaW5nICdhJyB3aXRoICdiJy4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgKHJlc3VsdCkgPT4gaW5jcmVtZW50UHJv
Z3Jlc3MoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3
cml0ZSgiVG8gbWFudWFsbHkgdGVzdCwgcHJlc3MgYW5kIGhvbGQgZG93biAnYScgYW5kIHNlbGVj
dCBvbmUgb2YgdGhlIGFjY2VudGVkIGNoYXJhY3RlcnMuIik7CisgICAgICAgICAgICB3cml0ZSgi
WW91IHNob3VsZCBvYnNlcnZlIGEgcGFpciBvZiBiZWZvcmVpbnB1dC9pbnB1dCBldmVudHMgZm9y
IGJvdGggJ2EnIGFuZCB0aGUgcmVwbGFjZW1lbnQgYWNjZW50ZWQgY2hhcmFjdGVyLiIpOworICAg
ICAgICAgICAgd3JpdGUoIkltcG9ydGFudGx5LCB0aGUgaW5wdXRUeXBlIG9mIHRoZSBsYXN0IHR3
byBldmVudHMgc2hvdWxkIGJlICdpbnNlcnRSZXBsYWNlbWVudFRleHQnLiIpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50UHJvZ3Jlc3MoKQorICAgICAgICB7CisgICAg
ICAgICAgICBwcm9ncmVzcysrOworICAgICAgICAgICAgaWYgKHByb2dyZXNzICE9IDUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB3cml0ZShgVGhlIHZhbHVlIG9mIHRo
ZSBpbnB1dCBpcyBub3c6ICR7ZWRpdGFibGUudmFsdWV9YCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvZ0lucHV0
RXZlbnQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRlKGAoJHtldmVudC50YXJn
ZXQuaWR9KTogdHlwZT0ke2V2ZW50LnR5cGV9LCBpbnB1dFR5cGU9JHtldmVudC5pbnB1dFR5cGV9
LCBkYXRhPVxgJHtldmVudC5kYXRhfVxgLCBkYXRhVHJhbnNmZXI9XGAke2V2ZW50LmRhdGFUcmFu
c2Zlcn1cYGApOworICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGAKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuaW5zZXJ0VGV4dCgiYiIsIDAsIDEpOworICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9KSgpO2AKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAxODVmYmRjNGEzZDljZjI3ODRlMWRiMjBjY2ZmNDI5OWVlMzIzYmM2Li5h
NGY1NWUwODIzMzIwZjA3YmIwMTVjY2EyNTk4MGFjYjIzZGYzMmI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjAy
LDYgKzEyMDIsNyBAQCBmYXN0L2V2ZW50cy9mcmFtZS1zY3JvbGwtZmFrZS1tb3VzZS1tb3ZlLmh0
bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2ZyYW1lLXRhYi1mb2N1cy5odG1sIFsgRmFpbHVy
ZSBdCiBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sIFsgRmFpbHVy
ZSBdCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5ZG93bi1jYW5jZWwu
aHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2Vt
ZW50Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFnLWFuZC1k
cm9wLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1pbnNlcnQtYnkt
ZHJvcC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hl
bi10eXBpbmcuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTIxMiw2ICsxMjEzLDcgQEAgZmFzdC9ldmVu
dHMvaW5wdXQtZXZlbnRzLWltZS1yZWNvbXBvc2l0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1pbWUtY29tcG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLXJpY2gtZGF0YXRyYW5zZmVyLmh0bWwgWyBGYWls
dXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zcGVsbC1jaGVja2luZy1kYXRhdHJhbnNm
ZXIuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5z
ZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1
dC1ldmVudHMtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2Jl
Zm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0LWluLXRleHRmaWVsZC5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLWRpZmZlcmVudC1zdGFydC1l
bmQtZWxlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNlMDM3YjNhMjJjOTRjY2RiNzAwYjFjN2M3YmE0
NTMxNzljNmRhZWQuLjcxMmIxYmI4MWI1NmFhNjZlMTU4OGVkNWY2Nzg3YjNlYWRlYWU4NTMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0
LDYgKzg0LDEwIEBAIGZhc3QvZm9ybXMvZmlsZS9vcGVuLWZpbGUtcGFuZWwuaHRtbCBbIFNraXAg
XQogIyBXSzEgYW5kIFdLMiBtb3VzZW1vdmUgZXZlbnRzIGFyZSBzdWJ0bHkgZGlmZmVyZW50IGlu
IHdheXMgdGhhdCBicmVhayB0aGlzIHRlc3Qgb24gV0sxLgogZmFzdC9ldmVudHMvZ2hvc3RseS1t
b3VzZW1vdmVzLWluLXN1YmZyYW1lLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IHN1cHBvcnQgZm9y
IGluc2VydGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBvbiBX
SzEuCitmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQu
aHRtbCBbIFNraXAgXQorZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50
Lmh0bWwgWyBTa2lwIF0KKwogIyBNZWRpYSBTdHJlYW0gQVBJIHRlc3RpbmcgaXMgbm90IHN1cHBv
cnRlZCBmb3IgV0sxIHlldC4KIGZhc3QvbWVkaWFzdHJlYW0KIGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc3RyZWFtCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293384</attachid>
            <date>2016-10-30 19:13:32 -0700</date>
            <delta_ts>2016-10-30 19:17:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164209-20161030190938.patch</filename>
            <type>text/plain</type>
            <size>25968</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkzOGIyNjJkNDRlODI3
NTFlMWE2NWQ1YWZmYjA4YTc5NjUwNzdiZS4uMzdiMjQzZjIyNzUxZjQxYmFjOTA4MjNlMDFhN2M1
NTVhM2NlYzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEhvbGRpbmcgZG93
biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNob3VsZCBmaXJlICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGb3IgVHlwaW5nQ29tbWFuZHMgdGhhdCBjb3JyZXNwb25kIHRvICJpbnNlcnRSZXBsYWNlbWVu
dFRleHQiIGlucHV0VHlwZXMsIHZlbmQgZGF0YVRyYW5zZmVycyBmb3IgcmVzdWx0aW5nCisgICAg
ICAgIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgaWYgdGhlIGVkaXRlZCBhcmVhIGlzIG5v
dCBhbiBpbnB1dCBmaWVsZCBvciB0ZXh0YXJlYS4gVG8gZG8gdGhpcywgcmVuYW1lCisgICAgICAg
IG1fY3VycmVudFRleHRUb0luc2VydCB0byBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgYW5k
IGFkZCBtX2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0LCB3aGljaCBpcyB0aGUgSFRNTC0KKyAgICAg
ICAgZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBwbGFpbiB0ZXh0IHRvIGluc2VydCwgYW5kIHVzZSB0
aGVzZSB0byBjcmVhdGUgYW5kIHJldHVybiBhIERhdGFUcmFuc2ZlciBmcm9tCisgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKS4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaDoKKwogMjAxNi0xMC0yOSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gRml4IHRyYW5zZm9ybS1vcmlnaW4gYW5k
IHBlcnNwZWN0aXZlLW9yaWdpbiB0byBwYXJzZSBhcyBzaG9ydGhhbmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDM1NDlkM2VjNjQyYjY0MjkwMDg1NTE2NGM2OTFkMjIzNzdkMWFkYS4uZDI3ZDJkNTc2MDQyMmQ5
NWZkNWRjMWI3MWI2ZWExYWY2MTJjNWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNo
b3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHJlcGxhY2luZyB0ZXh0LCBjYWxsIEVkaXRvcjo6aW5zZXJ0
VGV4dCB3aXRoIHRoZSBjb3JyZWN0IFRleHRFdmVudElucHV0VHlwZSBzbyB0aGF0IFdlYkNvcmUg
d2lsbCBrbm93IHRvCisgICAgICAgIHVzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQgd2hl
biBjcmVhdGluZyBhbmQgYXBwbHlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVHlwaW5nQ29tbWFuZC4g
QWRkaXRpb25hbCBtaW5vcgorICAgICAgICBjaGFuZ2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgdGVz
dGluZyByZXBsYWNlbWVudCB0ZXh0IGluc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydFRleHQ6
cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKIDIwMTYtMTAt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIGNs
YXNzZXMgaW4gdGhlIEhUTUwgZGlyZWN0b3J5IGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDllODAyYTQ2
MDM0MjI0OTBjOTM5YTQ4MTJmNTM5YTRmYjZlOTVmMGIuLjRjNTI0OTcxNWViZDk4ZWM2Yzk2MmI0
ZTE3Mzg3Mzc0NzZhZmUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQyLDkgKzQzLDExIEBACiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgor
I2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Myw3ICsx
NDYsOCBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwg
RVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgIDogVGV4dEluc2VydGlvbkJhc2VD
b21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24p
KQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0
KHRleHRUb0luc2VydCkKLSAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQp
CisgICAgLCBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCisgICAgLCBt
X2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0KGNyZWF0ZU1hcmt1cChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIHRleHRUb0luc2VydCkpKQogICAgICwgbV9vcGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAg
ICwgbV9zZWxlY3RJbnNlcnRlZFRleHQob3B0aW9ucyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAg
ICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQpAQCAtNDA2LDE1ICs0MTAs
MjQgQEAgU3RyaW5nIFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OgotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50
OgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFBlbmRpbmdDb21wb3NpdGlvbjoKICAg
ICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRGaW5hbENvbXBvc2l0aW9uOgotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50VGV4dFRvSW5zZXJ0OworICAgICAgICByZXR1cm4gbV9jdXJyZW50UGxh
aW5UZXh0VG9JbnNlcnQ7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6Cisg
ICAgICAgIHJldHVybiBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgPyBtX2N1cnJlbnRQ
bGFpblRleHRUb0luc2VydCA6IFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKICAgICB9CiB9CiAKK1Jl
ZlB0cjxEYXRhVHJhbnNmZXI+IFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIo
KSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudChtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgbV9jdXJyZW50SFRNTFRleHRU
b0luc2VydCk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKIHsK
ICAgICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5nIHNlcGFyYXRlbHkg
KHNlZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgpAQCAtNDc3LDcg
KzQ5MCw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5n
KEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogCiBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxB
ZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdlPiYm
IHJhbmdlKQogewotICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7CisgICAgbV9jdXJy
ZW50UGxhaW5UZXh0VG9JbnNlcnQgPSB0ZXh0OworICAgIG1fY3VycmVudEhUTUxUZXh0VG9JbnNl
cnQgPSBjcmVhdGVNYXJrdXAoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQpKTsKICAgICBt
X2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29t
bWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0
aW9uKTsKIAogICAgIGlmICghc2hvdWxkRGVmZXJXaWxsQXBwbHlDb21tYW5kVW50aWxBZGRpbmdU
eXBpbmdDb21tYW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4
IGI5NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAuLjM3MDgwMDc4YjViZmI2
M2ZkNjczNDQ4OTZiNjcxMDg1OTgxZjA4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbnB1
dEV2ZW50VHlwZU5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBpbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxh
YmxlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25JZkRp
ZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKFR5cGluZ0NvbW1hbmQqLCBGcmFtZSopOwpAQCAt
MTQ0LDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgRVR5cGluZ0NvbW1hbmQgbV9jb21tYW5kVHlw
ZTsKICAgICBFZGl0QWN0aW9uIG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb247CiAgICAgU3RyaW5n
IG1fdGV4dFRvSW5zZXJ0OwotICAgIFN0cmluZyBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CisgICAg
U3RyaW5nIG1fY3VycmVudFBsYWluVGV4dFRvSW5zZXJ0OworICAgIFN0cmluZyBtX2N1cnJlbnRI
VE1MVGV4dFRvSW5zZXJ0OwogICAgIGJvb2wgbV9vcGVuRm9yTW9yZVR5cGluZzsKICAgICBib29s
IG1fc2VsZWN0SW5zZXJ0ZWRUZXh0OwogICAgIGJvb2wgbV9zbWFydERlbGV0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZGZj
Yzg5Y2E2YWQ2Y2VhZWEzMDliMWZjYjAxMzQ5MGE2OWQwOS4uZmU0NDMxNzk5MGIxNDlhZmRiMjk4
MzNlZTU4YzI3Y2MzOTIzZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ2NTAsNiArNDY1MCwxMSBAQCAtICh2b2lkKV9oYW5k
bGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTooQk9PTCloYXNBY3RpdmVTZXNz
aW9uIHRpdGxlOgogewogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KIH0KKworLSAo
dm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVw
bGFjZW1lbnRSYW5nZQoreworICAgIFtzZWxmIGluc2VydFRleHQ6c3RyaW5nIHJlcGxhY2VtZW50
UmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAt
ICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClv
cmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggN2UyZTYyNzgyNzhhOGY0ZTNmNmUwYzkzMmFhZDc3OTQwZjMx
ZjFkMC4uZWM3MDM0NmNjOGFlY2YzYmJiNDgzMzA0M2Q2N2U5Y2Y0Yjk5NGU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTI5MCw2ICsyOTAsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1l
ZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3Nob3VsZFJlcXVlc3RDYW5kaWRhdGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpKTsKIC0gKHZvaWQpX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfaGFuZGxlQWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZSBkdXJhdGlvbjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihk
b3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwor
CistICh2b2lkKV9pbnNlcnRUZXh0OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5n
ZSlyZXBsYWNlbWVudFJhbmdlOwogI2VuZGlmCiAKIC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dG
bG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggODQ5YjNhMjY2ZTM4M2MwNmQ3MThkZDZhMzA4YWEzNjg1NDhlZDM2Ny4u
ZDA5MDAxNTc5OWFlOTE0M2I4MjYxMzExNjk0YmRlN2FlMWM1YzZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDYyNSwxMSArNDYyNSwx
MyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKKyAgICBib29sIHJl
cGxhY2VzVGV4dCA9IGZhbHNlOwogICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2Nh
dGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFu
Z2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8+KGVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbykpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkgewogICAgICAgICAgICAg
VGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNo
cm9ub3VzbHkobV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBz
dXBwcmVzc1NlbGVjdGlvblVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC00NjM5LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbgogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMg
aW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1w
bGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4K
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyKTsKKyAgICAg
ICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyLCByZXBsYWNlc1RleHQg
PyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwMzFiYTFkZGVkYTYwZTY2ZTNlMGI5MTliYTA3ZmRjNjE1ODYyZjExLi40ODExZDdiYWZl
Zjg1ZTg0NGJkMmZhZDMyYjllOTU0YjA5YWRmYmI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSG9sZGluZyBk
b3duIGEga2V5IHRvIGNob29zZSBhbiBhY2NlbnRlZCBjaGFyYWN0ZXIgc2hvdWxkIGZpcmUgImlu
c2VydFJlcGxhY2VtZW50VGV4dCIgaW5wdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MDE5MzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgdGVzdCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBvbiBN
YWMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBob2xkaW5nIGRvd24gYSB2b3dlbCBrZXkgKGUuZy4K
KyAgICAgICAgJ2EnKSB0byBicmluZyB1cCB0aGUgbWVudSBjb250YWluaW5nIGFjY2VudGVkIHZl
cnNpb24gb2YgdGhlIGNoYXJhY3RlciwgdGhlbiBzZWxlY3RpbmcgYW4gYWNjZW50ZWQgY2hhcmFj
dGVyIHRvCisgICAgICAgIGluc2VydCBpbiBwbGFjZSBvZiB0aGUgdHlwZWQgY2hhcmFjdGVyLiBU
aGlzIGlzIGV4cG9zZWQgdmlhIFVJU2NyaXB0Q29udHJvbGxlci5pbnNlcnRUZXh0LCB3aGljaCB0
YWtlcyBhIHN0cmluZworICAgICAgICBhbmQgYW4gaW5zZXJ0aW9uIHJhbmdlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRs
OgorCisgICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjYWxsYmFjayBhcmd1bWVudCB0byBp
bnNlcnRUZXh0LCBzaW5jZSBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQgaXMgc3luY2hy
b25vdXMgaW4KKyAgICAgICAgdGhlIFVJIHByb2Nlc3MuIFRoZSB0ZXN0cyBlbmQgd2hlbiBjb3Jy
ZXNwb25kaW5nIGlucHV0IGV2ZW50cyBmaXJlZCBhcyBhIHJlc3VsdCBvZiBpbnNlcnRUZXh0IGhh
dmUgYmVlbiByZWNlaXZlZAorICAgICAgICBpbiB0aGUgd2ViIHByb2Nlc3MuIFBsZWFzZSBzZWUg
dGhlIG5ldyBsYXlvdXQgdGVzdHMgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBUZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXVFI6Om5zU3RyaW5nRnJvbUpTU3RyaW5nKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjppbnNlcnRUZXh0KToKKwogMjAxNi0xMC0yOSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVSVNjcmlwdENvbnRyb2xsZXJJT1MubW0g
c2hvdWxkIG5vdCBiZSBzb2Z0LWxpbmtpbmcgVUlLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDVlYWM4ZDg3YWU4ZjgxMzYy
ZTI1MmI0YzE0MDIyZDQxODk0ZDdjMzAuLjBlNzM2NTlmNTI2YmYyMjRjYjM2ZWI5OTk5N2Y4YTVi
NzU4NjY2Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQpAQCAtMjE1LDYgKzIxNSwxMCBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdS
ZWYsIGxvbmcsIGxvbmcpCit7Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdz
L1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4IDJlYzk0OTg1NWRh
Zjg4ZGVmNzRiMjk2MGYzNTIzOTk5MDM5ZDU1ODguLjMwZjYxN2ZlMmU2Y2M1MjA1ZTJjM2I5Njk0
ZDA2MDI5YmYzMjczY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbApAQCAtMTU2LDUgKzE1Niw3IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewog
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0czsg
Ly8gQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcsIGFuZCAn
aGVpZ2h0JyBwcm9wZXJ0aWVzLgogCisgICAgdm9pZCBpbnNlcnRUZXh0KERPTVN0cmluZyB0ZXh0
LCBsb25nIGxvY2F0aW9uLCBsb25nIGxlbmd0aCk7CisKICAgICB2b2lkIHVpU2NyaXB0Q29tcGxl
dGUoRE9NU3RyaW5nIHJlc3VsdCk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
YTQ0ODI5NDkzNDE5N2NlOWEwNWM2NzgwZGNlZmQ5OWI4YmE1NTYxYy4uODNjNzUxMzVlMjdhMDNj
ZjljMGYyZmVmMTlmYjg5ZTAxMWJkNzhmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0zMTcsNiArMzE3LDE0IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybUNsZWFy
QWxsQ2FsbGJhY2tzKCkKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKE1BQykKKwordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYsIGxvbmcsIGxvbmcpCit7
Cit9CisKKyNlbmRpZgorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dWlTY3JpcHRDb21wbGV0
ZShKU1N0cmluZ1JlZiByZXN1bHQpCiB7CiAgICAgbV9jb250ZXh0LT5yZXF1ZXN0VUlTY3JpcHRD
b21wbGV0aW9uKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGQ2ZDc5NDY1MDVk
N2Y3NDcwMzA0ZGJhMGNkYWY5OTRlZTVkYzQ4MDcuLmNjNmY3YmJiZTE1NGNmNDE4MDhkZTUxYzc0
M2QwODdhNmUzMzY5ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTcsNiArMTE3LDgg
QEAgcHVibGljOgogICAgIAogICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlvblJhbmdlVmlld1JlY3Rz
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGluc2VydFRleHQoSlNTdHJpbmdSZWYsIGxvbmcgbG9jYXRp
b24sIGxvbmcgbGVuZ3RoKTsKKwogICAgIHZvaWQgdWlTY3JpcHRDb21wbGV0ZShKU1N0cmluZ1Jl
ZiByZXN1bHQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDRmNmNjZWJhN2QzZmI0MDk4NWEwNjIx
NzIwY2I4YTFjMGViMjQ3NWQuLjEwOGU5YTY3NjZjNGQ4NGZkYjRlZTUwNDZhOTMxNmQzYmM2ZjMw
ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KQEAgLTI2LDEwICsyNiwyMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJVSVNjcmlwdENvbnRyb2xsZXIuaCIKIAorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3Lmgi
CisjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgi
CisjaW1wb3J0ICJUZXN0UnVubmVyV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVSVNjcmlwdENvbnRl
eHQuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAKIG5hbWVzcGFjZSBX
VFIgewogCitOU1N0cmluZyAqbnNTdHJpbmdGcm9tSlNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5n
KQoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9XVEZTdHJpbmco
dG9XSyhzdHJpbmcpKS51dGY4KCkuZGF0YSgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFy
ZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CkBAIC00
MSw0ICs1MSwxOSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1
ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omlu
c2VydFRleHQoSlNTdHJpbmdSZWYgdGV4dCwgbG9uZyBsb2NhdGlvbiwgbG9uZyBsZW5ndGgpCit7
CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIGxv
Y2F0aW9uID0gTlNOb3RGb3VuZDsKKworICAgIGF1dG8qIHdlYlZpZXcgPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgW3dlYlZp
ZXcgX2luc2VydFRleHQ6bnNTdHJpbmdGcm9tSlNTdHJpbmcodGV4dCkgcmVwbGFjZW1lbnRSYW5n
ZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV07CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TSh0ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZDQ0YmZhZDhmYjJlZDM0OGM5MzFhN2U3
OWY5M2I5YmFlMDMwZjFiLi4wMDc1MjAxMzliODg2YzEwMDBmMjRiOWRkOGNkNzU5MGI4Y2RjMzFi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSG9sZGluZyBkb3duIGEga2V5IHRvIGNob29z
ZSBhbiBhY2NlbnRlZCBjaGFyYWN0ZXIgc2hvdWxkIGZpcmUgImluc2VydFJlcGxhY2VtZW50VGV4
dCIgaW5wdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQyMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDE5MzA1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiBuZXcgbGF5
b3V0IHRlc3RzIHRvIHZlcmlmeSB0aGF0IGluc2VydGluZyByZXBsYWNlbWVudCB0ZXh0IGZpcmVz
IGlucHV0IGV2ZW50cyBvZiBpbnB1dFR5cGUKKyAgICAgICAgImluc2VydFJlcGxhY2VtZW50VGV4
dCIgaW5zdGVhZCBvZiB0aGUgZ2VuZXJpYyAiaW5zZXJ0VGV4dCIsIGFuZCB0aGF0IGNhbGxpbmcg
cHJldmVudERlZmF1bHQoKSBvbiB0aGUKKyAgICAgICAgYmVmb3JlaW5wdXQgZXZlbnQgcHJldmVu
dHMgdGV4dCBmcm9tIGJlaW5nIGluc2VydGVkLiBBbHNvIGNoZWNrcyB0aGF0IGluc2VydGluZyBy
ZXBsYWNlbWVudCB0ZXh0IGluCisgICAgICAgIGNvbnRlbnRlZGl0YWJsZSBhcmVhcyBjYXVzZXMg
dGhlIGRhdGFUcmFuc2ZlciBhdHRyaWJ1dGUgdG8gYmUgcG9wdWxhdGVkLCBhbmQgdGhhdCB0aGUg
ZGF0YSBhdHRyaWJ1dGUgaXMgbnVsbC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQt
cmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9p
bnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNi0xMC0yOSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRlc3RoYXJuZXNzLmpzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIHVubmVjZXNzYXJ5IGNvcGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50
LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM2NjI4OGNmOGRm
ZGE3NTNiM2EyMzgwZWU0M2Q0MTVjYzU2N2I5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACithCitUeXBpbmcgJ2EnLi4uCisoZWRpdGFibGUp
OiB0eXBlPWJlZm9yZWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0VGV4dCwgZGF0YT1gYWAsIGRhdGFU
cmFuc2Zlcj1gcGxhaW46ImEiLCBodG1sOiJhImAKKyhlZGl0YWJsZSk6IHR5cGU9aW5wdXQsIGlu
cHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRhPWBhYCwgZGF0YVRyYW5zZmVyPWBwbGFpbjoiYSIsIGh0
bWw6ImEiYAorQXR0ZW1wdGluZyB0byByZXBsYWNlICdhJyB3aXRoICdiJy4uLgorKGVkaXRhYmxl
KTogdHlwZT1iZWZvcmVpbnB1dCwgaW5wdXRUeXBlPWluc2VydFJlcGxhY2VtZW50VGV4dCwgZGF0
YT1gbnVsbGAsIGRhdGFUcmFuc2Zlcj1gcGxhaW46ImIiLCBodG1sOiJiImAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJl
cGxhY2VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJl
dmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2JiZWZjNGU0ZDliZDk5
Mjk0MzQxY2U1NDExYWJiNWZkZWM2OTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
QEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9ImVkaXRhYmxlIiBvbmJlZm9yZWlucHV0PWhhbmRsZUlucHV0RXZlbnQoZXZlbnQpIG9u
aW5wdXQ9aGFuZGxlSW5wdXRFdmVudChldmVudCkgY29udGVudGVkaXRhYmxlPjwvZGl2PgorICAg
IDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgICAgICBsZXQgd3JpdGUgPSBzID0+IG91dHB1dC5pbm5lckhUTUwgKz0gcyArICI8
YnI+IjsKKyAgICAgICAgdmFyIHByb2dyZXNzID0gMDsKKyAgICAgICAgZWRpdGFibGUuZm9jdXMo
KTsKKworICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0
cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyICYmIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAgICAgICB3cml0
ZSgiVHlwaW5nICdhJy4uLiIpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
ImEiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiQXR0ZW1wdGluZyB0byByZXBsYWNlICdhJyB3
aXRoICdiJy4uLiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0
VUlTY3JpcHQoKSwgKHJlc3VsdCkgPT4gaW5jcmVtZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cml0ZSgiVG8gbWFudWFsbHkgdGVz
dCwgcHJlc3MgYW5kIGhvbGQgZG93biAnYScgYW5kIHNlbGVjdCBvbmUgb2YgdGhlIGFjY2VudGVk
IGNoYXJhY3RlcnMuIik7CisgICAgICAgICAgICB3cml0ZSgiWW91IHNob3VsZCBvYnNlcnZlIHRo
YXQgdGhlIHJlcGxhY2VtZW50IGFjY2VudGVkIGNoYXJhY3RlciBkb2VzIG5vdCByZXBsYWNlICdh
Jy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudFByb2dyZXNzKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3Jlc3MrKzsKKyAgICAgICAgICAgIGlmIChwcm9n
cmVzcyA9PSAyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXRFdmVudChldmVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgd3JpdGUoYCgke2V2ZW50LnRhcmdldC5pZH0pOiB0eXBlPSR7ZXZl
bnQudHlwZX0sIGlucHV0VHlwZT0ke2V2ZW50LmlucHV0VHlwZX0sIGRhdGE9XGAke2V2ZW50LmRh
dGF9XGAsIGRhdGFUcmFuc2Zlcj1cYHBsYWluOiIke2V2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRh
KCd0ZXh0L3BsYWluJyl9IiwgaHRtbDoiJHtldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4
dC9odG1sJyl9IlxgYCk7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5z
ZXJ0UmVwbGFjZW1lbnRUZXh0IikgeworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiYiIsIDAsIDEpOworICAgICAgICAg
ICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9KSgp
O2AKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lu
cHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjY2RhYjM4YTA0OWNkMWEyNTM3NDA5NmQ2ZTYyZGI0MjJjMWFiZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQt
cmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKworVHlwaW5nICdhJy4u
LgorKGVkaXRhYmxlKTogdHlwZT1iZWZvcmVpbnB1dCwgaW5wdXRUeXBlPWluc2VydFRleHQsIGRh
dGE9YGFgLCBkYXRhVHJhbnNmZXI9YG51bGxgCisoZWRpdGFibGUpOiB0eXBlPWlucHV0LCBpbnB1
dFR5cGU9aW5zZXJ0VGV4dCwgZGF0YT1gYWAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKK1RoZSB2YWx1
ZSBvZiB0aGUgaW5wdXQgaXMgbm93OiBhCisKK1JlcGxhY2luZyAnYScgd2l0aCAnYicuLi4KKyhl
ZGl0YWJsZSk6IHR5cGU9YmVmb3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRSZXBsYWNlbWVudFRl
eHQsIGRhdGE9YGJgLCBkYXRhVHJhbnNmZXI9YG51bGxgCisoZWRpdGFibGUpOiB0eXBlPWlucHV0
LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFjZW1lbnRUZXh0LCBkYXRhPWBiYCwgZGF0YVRyYW5zZmVy
PWBudWxsYAorVGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBpcyBub3c6IGIKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1l
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NTRiYzU1ODcxM2UwMjgyOTAzZmY1YzY4MzA5NjkyZTM3YzRl
ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZl
bnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxpbnB1dCBpZD0iZWRpdGFibGUiIG9uYmVmb3JlaW5w
dXQ9bG9nSW5wdXRFdmVudChldmVudCkgb25pbnB1dD1sb2dJbnB1dEV2ZW50KGV2ZW50KT48L2lu
cHV0PgorICAgIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgICAgICBsZXQgd3JpdGUgPSBzID0+IG91dHB1dC5pbm5lckhUTUwg
Kz0gcyArICI8YnI+IjsKKyAgICAgICAgdmFyIHByb2dyZXNzID0gMDsKKyAgICAgICAgZWRpdGFi
bGUuZm9jdXMoKTsKKworICAgICAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRz
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyICYmIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAg
ICAgICB3cml0ZSgiVHlwaW5nICdhJy4uLiIpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImEiKTsKKyAgICAgICAgICAgICAgICB3cml0ZShgVGhlIHZhbHVlIG9mIHRoZSBp
bnB1dCBpcyBub3c6ICR7ZWRpdGFibGUudmFsdWV9YCk7CisgICAgICAgICAgICAgICAgd3JpdGUo
IiIpOworICAgICAgICAgICAgICAgIHdyaXRlKCJSZXBsYWNpbmcgJ2EnIHdpdGggJ2InLi4uIik7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCAo
cmVzdWx0KSA9PiBpbmNyZW1lbnRQcm9ncmVzcygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHdyaXRlKCJUbyBtYW51YWxseSB0ZXN0LCBwcmVzcyBhbmQg
aG9sZCBkb3duICdhJyBhbmQgc2VsZWN0IG9uZSBvZiB0aGUgYWNjZW50ZWQgY2hhcmFjdGVycy4i
KTsKKyAgICAgICAgICAgIHdyaXRlKCJZb3Ugc2hvdWxkIG9ic2VydmUgYSBwYWlyIG9mIGJlZm9y
ZWlucHV0L2lucHV0IGV2ZW50cyBmb3IgYm90aCAnYScgYW5kIHRoZSByZXBsYWNlbWVudCBhY2Nl
bnRlZCBjaGFyYWN0ZXIuIik7CisgICAgICAgICAgICB3cml0ZSgiSW1wb3J0YW50bHksIHRoZSBp
bnB1dFR5cGUgb2YgdGhlIGxhc3QgdHdvIGV2ZW50cyBzaG91bGQgYmUgJ2luc2VydFJlcGxhY2Vt
ZW50VGV4dCcuIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBpbmNyZW1lbnRQcm9n
cmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByb2dyZXNzKys7CisgICAgICAgICAgICBp
ZiAocHJvZ3Jlc3MgIT0gNSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IHdyaXRlKGBUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlzIG5vdzogJHtlZGl0YWJsZS52YWx1ZX1g
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9nSW5wdXRFdmVudChldmVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgd3JpdGUoYCgke2V2ZW50LnRhcmdldC5pZH0pOiB0eXBlPSR7ZXZlbnQudHlwZX0sIGlucHV0
VHlwZT0ke2V2ZW50LmlucHV0VHlwZX0sIGRhdGE9XGAke2V2ZW50LmRhdGF9XGAsIGRhdGFUcmFu
c2Zlcj1cYCR7ZXZlbnQuZGF0YVRyYW5zZmVyfVxgYCk7CisgICAgICAgICAgICBpbmNyZW1lbnRQ
cm9ncmVzcygpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbnNlcnRUZXh0KCJiIiwgMCwgMSk7Cisg
ICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKKyAgICAgICAg
ICAgIH0pKCk7YAorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE4NWZiZGM0YTNkOWNmMjc4NGUx
ZGIyMGNjZmY0Mjk5ZWUzMjNiYzYuLmE0ZjU1ZTA4MjMzMjBmMDdiYjAxNWNjYTI1OTgwYWNiMjNk
ZjMyYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEyMDIsNiArMTIwMiw3IEBAIGZhc3QvZXZlbnRzL2ZyYW1lLXNj
cm9sbC1mYWtlLW1vdXNlLW1vdmUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvZnJhbWUt
dGFiLWZvY3VzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1l
dmVudHMtMDAxLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0VGV4dC1uZXZlci1m
aXJlZC1vbi1rZXlkb3duLWNhbmNlbC5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1
dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMv
aW5wdXQtZXZlbnRzLWRyYWctYW5kLWRyb3AuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMv
aW5wdXQtZXZlbnRzLWluc2VydC1ieS1kcm9wLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRz
L2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sIFsgRmFpbHVyZSBdCkBAIC0xMjEy
LDYgKzEyMTMsNyBAQCBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW1lLXJlY29tcG9zaXRpb24u
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWltZS1jb21wb3NpdGlv
bi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtcmljaC1k
YXRhdHJhbnNmZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNw
ZWxsLWNoZWNraW5nLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9i
ZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWRlZmF1bHQuaHRtbCBbIEZh
aWx1cmUgXQogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWRlZmF1bHQt
aW4tdGV4dGZpZWxkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1l
dmVudHMtZGlmZmVyZW50LXN0YXJ0LWVuZC1lbGVtZW50cy5odG1sIFsgRmFpbHVyZSBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggY2UwMzdi
M2EyMmM5NGNjZGI3MDBiMWM3YzdiYTQ1MzE3OWM2ZGFlZC4uNzEyYjFiYjgxYjU2YWE2NmUxNTg4
ZWQ1ZjY3ODdiM2VhZGVhZTg1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtODQsNiArODQsMTAgQEAgZmFzdC9mb3Jtcy9maWxlL29wZW4t
ZmlsZS1wYW5lbC5odG1sIFsgU2tpcCBdCiAjIFdLMSBhbmQgV0syIG1vdXNlbW92ZSBldmVudHMg
YXJlIHN1YnRseSBkaWZmZXJlbnQgaW4gd2F5cyB0aGF0IGJyZWFrIHRoaXMgdGVzdCBvbiBXSzEu
CiBmYXN0L2V2ZW50cy9naG9zdGx5LW1vdXNlbW92ZXMtaW4tc3ViZnJhbWUuaHRtbCBbIFNraXAg
XQogCisjIFRlc3Qgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIHNwZWNpYWwgY2hhcmFjdGVycyBpcyBu
b3QgeWV0IGltcGxlbWVudGVkIG9uIFdLMS4KK2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2
ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L2V2ZW50cy9pbnB1dC1l
dmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQorCiAjIE1lZGlhIFN0cmVhbSBB
UEkgdGVzdGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBXSzEgeWV0LgogZmFzdC9tZWRpYXN0cmVh
bQogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zdHJlYW0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293385</attachid>
            <date>2016-10-30 19:17:48 -0700</date>
            <delta_ts>2016-10-30 21:03:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164209-20161030191353.patch</filename>
            <type>text/plain</type>
            <size>25948</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkzOGIyNjJkNDRlODI3
NTFlMWE2NWQ1YWZmYjA4YTc5NjUwNzdiZS4uMzdiMjQzZjIyNzUxZjQxYmFjOTA4MjNlMDFhN2M1
NTVhM2NlYzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEhvbGRpbmcgZG93
biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNob3VsZCBmaXJlICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGb3IgVHlwaW5nQ29tbWFuZHMgdGhhdCBjb3JyZXNwb25kIHRvICJpbnNlcnRSZXBsYWNlbWVu
dFRleHQiIGlucHV0VHlwZXMsIHZlbmQgZGF0YVRyYW5zZmVycyBmb3IgcmVzdWx0aW5nCisgICAg
ICAgIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgaWYgdGhlIGVkaXRlZCBhcmVhIGlzIG5v
dCBhbiBpbnB1dCBmaWVsZCBvciB0ZXh0YXJlYS4gVG8gZG8gdGhpcywgcmVuYW1lCisgICAgICAg
IG1fY3VycmVudFRleHRUb0luc2VydCB0byBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgYW5k
IGFkZCBtX2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0LCB3aGljaCBpcyB0aGUgSFRNTC0KKyAgICAg
ICAgZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBwbGFpbiB0ZXh0IHRvIGluc2VydCwgYW5kIHVzZSB0
aGVzZSB0byBjcmVhdGUgYW5kIHJldHVybiBhIERhdGFUcmFuc2ZlciBmcm9tCisgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKS4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaDoKKwogMjAxNi0xMC0yOSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gRml4IHRyYW5zZm9ybS1vcmlnaW4gYW5k
IHBlcnNwZWN0aXZlLW9yaWdpbiB0byBwYXJzZSBhcyBzaG9ydGhhbmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDM1NDlkM2VjNjQyYjY0MjkwMDg1NTE2NGM2OTFkMjIzNzdkMWFkYS4uZDI3ZDJkNTc2MDQyMmQ5
NWZkNWRjMWI3MWI2ZWExYWY2MTJjNWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNo
b3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHJlcGxhY2luZyB0ZXh0LCBjYWxsIEVkaXRvcjo6aW5zZXJ0
VGV4dCB3aXRoIHRoZSBjb3JyZWN0IFRleHRFdmVudElucHV0VHlwZSBzbyB0aGF0IFdlYkNvcmUg
d2lsbCBrbm93IHRvCisgICAgICAgIHVzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQgd2hl
biBjcmVhdGluZyBhbmQgYXBwbHlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVHlwaW5nQ29tbWFuZC4g
QWRkaXRpb25hbCBtaW5vcgorICAgICAgICBjaGFuZ2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgdGVz
dGluZyByZXBsYWNlbWVudCB0ZXh0IGluc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydFRleHQ6
cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRleHRBc3luYyk6CisKIDIwMTYtMTAt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIGNs
YXNzZXMgaW4gdGhlIEhUTUwgZGlyZWN0b3J5IGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDllODAyYTQ2
MDM0MjI0OTBjOTM5YTQ4MTJmNTM5YTRmYjZlOTVmMGIuLjRjNTI0OTcxNWViZDk4ZWM2Yzk2MmI0
ZTE3Mzg3Mzc0NzZhZmUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTQyLDkgKzQzLDExIEBACiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dGF0aWNSYW5nZS5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgor
I2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Myw3ICsx
NDYsOCBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwg
RVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgIDogVGV4dEluc2VydGlvbkJhc2VD
b21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24p
KQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0
KHRleHRUb0luc2VydCkKLSAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQp
CisgICAgLCBtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCisgICAgLCBt
X2N1cnJlbnRIVE1MVGV4dFRvSW5zZXJ0KGNyZWF0ZU1hcmt1cChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIHRleHRUb0luc2VydCkpKQogICAgICwgbV9vcGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAg
ICwgbV9zZWxlY3RJbnNlcnRlZFRleHQob3B0aW9ucyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAg
ICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQpAQCAtNDA2LDE1ICs0MTAs
MjQgQEAgU3RyaW5nIFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OgotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50
OgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFBlbmRpbmdDb21wb3NpdGlvbjoKICAg
ICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRGaW5hbENvbXBvc2l0aW9uOgotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50VGV4dFRvSW5zZXJ0OworICAgICAgICByZXR1cm4gbV9jdXJyZW50UGxh
aW5UZXh0VG9JbnNlcnQ7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6Cisg
ICAgICAgIHJldHVybiBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgPyBtX2N1cnJlbnRQ
bGFpblRleHRUb0luc2VydCA6IFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKICAgICB9CiB9CiAKK1Jl
ZlB0cjxEYXRhVHJhbnNmZXI+IFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIo
KSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudChtX2N1cnJlbnRQbGFpblRleHRUb0luc2VydCwgbV9jdXJyZW50SFRNTFRleHRU
b0luc2VydCk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKIHsK
ICAgICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5nIHNlcGFyYXRlbHkg
KHNlZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgpAQCAtNDc3LDcg
KzQ5MCw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5n
KEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogCiBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxB
ZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdlPiYm
IHJhbmdlKQogewotICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7CisgICAgbV9jdXJy
ZW50UGxhaW5UZXh0VG9JbnNlcnQgPSB0ZXh0OworICAgIG1fY3VycmVudEhUTUxUZXh0VG9JbnNl
cnQgPSBjcmVhdGVNYXJrdXAoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQpKTsKICAgICBt
X2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29t
bWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0
aW9uKTsKIAogICAgIGlmICghc2hvdWxkRGVmZXJXaWxsQXBwbHlDb21tYW5kVW50aWxBZGRpbmdU
eXBpbmdDb21tYW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4
IGI5NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAuLjM3MDgwMDc4YjViZmI2
M2ZkNjczNDQ4OTZiNjcxMDg1OTgxZjA4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbnB1
dEV2ZW50VHlwZU5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBpbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0JlZm9yZUlucHV0RXZlbnRDYW5jZWxh
YmxlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25JZkRp
ZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKFR5cGluZ0NvbW1hbmQqLCBGcmFtZSopOwpAQCAt
MTQ0LDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgRVR5cGluZ0NvbW1hbmQgbV9jb21tYW5kVHlw
ZTsKICAgICBFZGl0QWN0aW9uIG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb247CiAgICAgU3RyaW5n
IG1fdGV4dFRvSW5zZXJ0OwotICAgIFN0cmluZyBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CisgICAg
U3RyaW5nIG1fY3VycmVudFBsYWluVGV4dFRvSW5zZXJ0OworICAgIFN0cmluZyBtX2N1cnJlbnRI
VE1MVGV4dFRvSW5zZXJ0OwogICAgIGJvb2wgbV9vcGVuRm9yTW9yZVR5cGluZzsKICAgICBib29s
IG1fc2VsZWN0SW5zZXJ0ZWRUZXh0OwogICAgIGJvb2wgbV9zbWFydERlbGV0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZGZj
Yzg5Y2E2YWQ2Y2VhZWEzMDliMWZjYjAxMzQ5MGE2OWQwOS4uZmU0NDMxNzk5MGIxNDlhZmRiMjk4
MzNlZTU4YzI3Y2MzOTIzZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ2NTAsNiArNDY1MCwxMSBAQCAtICh2b2lkKV9oYW5k
bGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTooQk9PTCloYXNBY3RpdmVTZXNz
aW9uIHRpdGxlOgogewogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KIH0KKworLSAo
dm9pZClfaW5zZXJ0VGV4dDooaWQpc3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVw
bGFjZW1lbnRSYW5nZQoreworICAgIFtzZWxmIGluc2VydFRleHQ6c3RyaW5nIHJlcGxhY2VtZW50
UmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAt
ICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClv
cmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggN2UyZTYyNzgyNzhhOGY0ZTNmNmUwYzkzMmFhZDc3OTQwZjMx
ZjFkMC4uZWM3MDM0NmNjOGFlY2YzYmJiNDgzMzA0M2Q2N2U5Y2Y0Yjk5NGU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTI5MCw2ICsyOTAsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1l
ZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3Nob3VsZFJlcXVlc3RDYW5kaWRhdGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpKTsKIC0gKHZvaWQpX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfaGFuZGxlQWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZSBkdXJhdGlvbjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihk
b3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwor
CistICh2b2lkKV9pbnNlcnRUZXh0OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5n
ZSlyZXBsYWNlbWVudFJhbmdlOwogI2VuZGlmCiAKIC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dG
bG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggODQ5YjNhMjY2ZTM4M2MwNmQ3MThkZDZhMzA4YWEzNjg1NDhlZDM2Ny4u
ZDA5MDAxNTc5OWFlOTE0M2I4MjYxMzExNjk0YmRlN2FlMWM1YzZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDYyNSwxMSArNDYyNSwx
MyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKKyAgICBib29sIHJl
cGxhY2VzVGV4dCA9IGZhbHNlOwogICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2Nh
dGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFu
Z2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LCBzdGF0aWNfY2FzdDxFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8+KGVkaXRpbmdSYW5nZUlzUmVs
YXRpdmVUbykpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkgewogICAgICAgICAgICAg
VGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGlzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNo
cm9ub3VzbHkobV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5LCBz
dXBwcmVzc1NlbGVjdGlvblVwZGF0ZSk7CiAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIHJlcGxhY2VzVGV4dCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC00NjM5LDcgKzQ2NDEsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbgogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMg
aW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1w
bGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4K
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyKTsKKyAgICAg
ICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dCh0ZXh0LCBudWxscHRyLCByZXBsYWNlc1RleHQg
PyBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIDogVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAwMzFiYTFkZGVkYTYwZTY2ZTNlMGI5MTliYTA3ZmRjNjE1ODYyZjExLi4zYTFlYTNhZTli
OWZmM2ViODRiM2MwYTU5NjQxYzgxZTA5MTI1OWM4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSG9sZGluZyBk
b3duIGEga2V5IHRvIGNob29zZSBhbiBhY2NlbnRlZCBjaGFyYWN0ZXIgc2hvdWxkIGZpcmUgImlu
c2VydFJlcGxhY2VtZW50VGV4dCIgaW5wdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MDE5MzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgdGVzdCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBvbiBN
YWMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBob2xkaW5nIGRvd24gYSB2b3dlbCBrZXkgKGUuZy4K
KyAgICAgICAgJ2EnKSB0byBicmluZyB1cCB0aGUgbWVudSBjb250YWluaW5nIGFjY2VudGVkIHZl
cnNpb24gb2YgdGhlIGNoYXJhY3RlciwgdGhlbiBzZWxlY3RpbmcgYW4gYWNjZW50ZWQgY2hhcmFj
dGVyIHRvCisgICAgICAgIGluc2VydCBpbiBwbGFjZSBvZiB0aGUgdHlwZWQgY2hhcmFjdGVyLiBU
aGlzIGlzIGV4cG9zZWQgdmlhIFVJU2NyaXB0Q29udHJvbGxlci5pbnNlcnRUZXh0LCB3aGljaCB0
YWtlcyBhIHN0cmluZworICAgICAgICBhbmQgYW4gaW5zZXJ0aW9uIHJhbmdlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRs
OgorCisgICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjYWxsYmFjayBhcmd1bWVudCB0byBp
bnNlcnRUZXh0LCBzaW5jZSBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQgaXMgc3luY2hy
b25vdXMgaW4KKyAgICAgICAgdGhlIFVJIHByb2Nlc3MuIFRoZSB0ZXN0cyBlbmQgd2hlbiBjb3Jy
ZXNwb25kaW5nIGlucHV0IGV2ZW50cyBmaXJlZCBhcyBhIHJlc3VsdCBvZiBpbnNlcnRUZXh0IGhh
dmUgYmVlbiByZWNlaXZlZAorICAgICAgICBpbiB0aGUgd2ViIHByb2Nlc3MuIFBsZWFzZSBzZWUg
dGhlIG5ldyBsYXlvdXQgdGVzdHMgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBUZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXVFI6Om5zU3RyaW5nRnJvbUpTU3RyaW5nKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjppbnNlcnRUZXh0KToKKwogMjAxNi0xMC0yOSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVSVNjcmlwdENvbnRyb2xsZXJJT1MubW0g
c2hvdWxkIG5vdCBiZSBzb2Z0LWxpbmtpbmcgVUlLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDU2ZTIwNzdhNGIyYTIwYzFk
YjkxZGM5YTEwYmRkZTVmMjJjYzY0MGIuLjI4YzAxNzdhYTEyN2U1NDhmNGNmNmQxOTA0NDAyNzVm
MTU5YzIwOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQpAQCAtNDMsNiArNDMsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBsb25nLCBsb25nKQorewor
fQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlT
Y3JpcHRDb250cm9sbGVyLmlkbAppbmRleCAyZWM5NDk4NTVkYWY4OGRlZjc0YjI5NjBmMzUyMzk5
OTAzOWQ1NTg4Li4zMGY2MTdmZTJlNmNjNTIwNWUyYzNiOTY5NGQwNjAyOWJmMzI3M2NhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTE1Niw1ICsxNTYs
NyBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKIAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBvYmplY3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7IC8vIEFuIGFycmF5IG9mIG9iamVj
dHMgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgnLCBhbmQgJ2hlaWdodCcgcHJvcGVydGllcy4K
IAorICAgIHZvaWQgaW5zZXJ0VGV4dChET01TdHJpbmcgdGV4dCwgbG9uZyBsb2NhdGlvbiwgbG9u
ZyBsZW5ndGgpOworCiAgICAgdm9pZCB1aVNjcmlwdENvbXBsZXRlKERPTVN0cmluZyByZXN1bHQp
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGE0NDgyOTQ5MzQxOTdjZTlhMDVj
Njc4MGRjZWZkOTliOGJhNTU2MWMuLjgzYzc1MTM1ZTI3YTAzY2Y5YzBmMmZlZjE5ZmI4OWUwMTFi
ZDc4ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzE3LDYgKzMxNywxNCBAQCB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcygpCiB9CiAj
ZW5kaWYKIAorI2lmICFQTEFURk9STShNQUMpCisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpp
bnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBsb25nLCBsb25nKQoreworfQorCisjZW5kaWYKKwogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnVpU2NyaXB0Q29tcGxldGUoSlNTdHJpbmdSZWYgcmVzdWx0
KQogewogICAgIG1fY29udGV4dC0+cmVxdWVzdFVJU2NyaXB0Q29tcGxldGlvbihyZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkNmQ3OTQ2NTA1ZDdmNzQ3MDMwNGRiYTBjZGFmOTk0
ZWU1ZGM0ODA3Li5jYzZmN2JiYmUxNTRjZjQxODA4ZGU1MWM3NDNkMDg3YTZlMzM2OTgwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTE3LDYgKzExNyw4IEBAIHB1YmxpYzoKICAgICAKICAg
ICBKU09iamVjdFJlZiBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0OwogCisgICAgdm9p
ZCBpbnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBsb25nIGxvY2F0aW9uLCBsb25nIGxlbmd0aCk7CisK
ICAgICB2b2lkIHVpU2NyaXB0Q29tcGxldGUoSlNTdHJpbmdSZWYgcmVzdWx0KTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxl
ck1hYy5tbQppbmRleCA0ZjZjY2ViYTdkM2ZiNDA5ODVhMDYyMTcyMGNiOGExYzBlYjI0NzVkLi4x
MDhlOWE2NzY2YzRkODRmZGI0ZWU1MDQ2YTkzMTZkM2JjNmYzMGU0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC0yNiwx
MCArMjYsMjAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVUlTY3JpcHRDb250cm9s
bGVyLmgiCiAKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiU3RyaW5nRnVu
Y3Rpb25zLmgiCisjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgorI2ltcG9ydCAiVGVzdFJ1bm5l
cldLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlTY3JpcHRDb250ZXh0LmgiCisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIAorTlNTdHJpbmcgKm5z
U3RyaW5nRnJvbUpTU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvV1RGU3RyaW5nKHRvV0soc3RyaW5nKSkudXRmOCgp
LmRhdGEoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cit9CisKIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVu
c2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJh
Y2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwpAQCAtNDEsNCArNTEsMTkgQEAgdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAg
fSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVm
IHRleHQsIGxvbmcgbG9jYXRpb24sIGxvbmcgbGVuZ3RoKQoreworI2lmIFdLX0FQSV9FTkFCTEVE
CisgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICBsb2NhdGlvbiA9IE5TTm90Rm91bmQ7
CisKKyAgICBhdXRvKiB3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3IF9pbnNlcnRUZXh0Om5zU3Ry
aW5nRnJvbUpTU3RyaW5nKHRleHQpIHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRp
b24sIGxlbmd0aCldOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odGV4dCk7CisgICAgVU5VU0VE
X1BBUkFNKGxvY2F0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKKyNlbmRpZgorfQor
CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYmQ0NGJmYWQ4ZmIyZWQzNDhjOTMxYTdlNzlmOTNiOWJhZTAzMGYxYi4uMDA3
NTIwMTM5Yjg4NmMxMDAwZjI0YjlkZDhjZDc1OTBiOGNkYzMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE2LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFj
dGVyIHNob3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIDIgbmV3IGxheW91dCB0ZXN0cyB0byB2ZXJpZnkg
dGhhdCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBmaXJlcyBpbnB1dCBldmVudHMgb2YgaW5w
dXRUeXBlCisgICAgICAgICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGluc3RlYWQgb2YgdGhlIGdl
bmVyaWMgImluc2VydFRleHQiLCBhbmQgdGhhdCBjYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgb24g
dGhlCisgICAgICAgIGJlZm9yZWlucHV0IGV2ZW50IHByZXZlbnRzIHRleHQgZnJvbSBiZWluZyBp
bnNlcnRlZC4gQWxzbyBjaGVja3MgdGhhdCBpbnNlcnRpbmcgcmVwbGFjZW1lbnQgdGV4dCBpbgor
ICAgICAgICBjb250ZW50ZWRpdGFibGUgYXJlYXMgY2F1c2VzIHRoZSBkYXRhVHJhbnNmZXIgYXR0
cmlidXRlIHRvIGJlIHBvcHVsYXRlZCwgYW5kIHRoYXQgdGhlIGRhdGEgYXR0cmlidXRlIGlzIG51
bGwuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQt
cmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9i
ZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJl
cGxhY2VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3Iv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTYtMTAtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB0ZXN0aGFybmVzcy5qcy90ZXN0aGFybmVzc3JlcG9ydC5qcyB1bm5l
Y2Vzc2FyeSBjb3BpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9y
ZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNjYyODhjZjhkZmRhNzUzYjNhMjM4MGVlNDNkNDE1
Y2M1NjdiOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZv
cmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNyBAQAorYQorVHlwaW5nICdhJy4uLgorKGVkaXRhYmxlKTogdHlwZT1iZWZvcmVpbnB1dCwg
aW5wdXRUeXBlPWluc2VydFRleHQsIGRhdGE9YGFgLCBkYXRhVHJhbnNmZXI9YHBsYWluOiJhIiwg
aHRtbDoiYSJgCisoZWRpdGFibGUpOiB0eXBlPWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0VGV4dCwg
ZGF0YT1gYWAsIGRhdGFUcmFuc2Zlcj1gcGxhaW46ImEiLCBodG1sOiJhImAKK0F0dGVtcHRpbmcg
dG8gcmVwbGFjZSAnYScgd2l0aCAnYicuLi4KKyhlZGl0YWJsZSk6IHR5cGU9YmVmb3JlaW5wdXQs
IGlucHV0VHlwZT1pbnNlcnRSZXBsYWNlbWVudFRleHQsIGRhdGE9YG51bGxgLCBkYXRhVHJhbnNm
ZXI9YHBsYWluOiJiIiwgaHRtbDoiYiJgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2Vt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNiYmVmYzRlNGQ5YmQ5OTI5NDM0MWNlNTQxMWFiYjVmZGVj
Njk2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJlZGl0YWJsZSIgb25i
ZWZvcmVpbnB1dD1oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KSBvbmlucHV0PWhhbmRsZUlucHV0RXZl
bnQoZXZlbnQpIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJvdXRwdXQiPjwv
ZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgbGV0IHdy
aXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAgIHZhciBw
cm9ncmVzcyA9IDA7CisgICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7CisKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlR5cGluZyAnYScuLi4iKTsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIik7CisgICAgICAgICAgICAg
ICAgd3JpdGUoIkF0dGVtcHRpbmcgdG8gcmVwbGFjZSAnYScgd2l0aCAnYicuLi4iKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIChyZXN1bHQp
ID0+IGluY3JlbWVudFByb2dyZXNzKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgd3JpdGUoIlRvIG1hbnVhbGx5IHRlc3QsIHByZXNzIGFuZCBob2xkIGRv
d24gJ2EnIGFuZCBzZWxlY3Qgb25lIG9mIHRoZSBhY2NlbnRlZCBjaGFyYWN0ZXJzLiIpOworICAg
ICAgICAgICAgd3JpdGUoIllvdSBzaG91bGQgb2JzZXJ2ZSB0aGF0IHRoZSByZXBsYWNlbWVudCBh
Y2NlbnRlZCBjaGFyYWN0ZXIgZG9lcyBub3QgcmVwbGFjZSAnYScuIik7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBpbmNyZW1lbnRQcm9ncmVzcygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHByb2dyZXNzKys7CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPT0gMikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGhhbmRsZUlucHV0RXZlbnQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdy
aXRlKGAoJHtldmVudC50YXJnZXQuaWR9KTogdHlwZT0ke2V2ZW50LnR5cGV9LCBpbnB1dFR5cGU9
JHtldmVudC5pbnB1dFR5cGV9LCBkYXRhPVxgJHtldmVudC5kYXRhfVxgLCBkYXRhVHJhbnNmZXI9
XGBwbGFpbjoiJHtldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dC9wbGFpbicpfSIsIGh0
bWw6IiR7ZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvaHRtbCcpfSJcYGApOworICAg
ICAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIp
IHsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAg
ICAgIGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBgCisgICAgICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLmluc2VydFRleHQoImIiLCAwLCAxKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgfSkoKTtgCisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVw
bGFjZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZl
bnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2NkYWIzOGEw
NDljZDFhMjUzNzQwOTZkNmU2MmRiNDIyYzFhYmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACisKK1R5cGluZyAnYScuLi4KKyhlZGl0YWJsZSk6IHR5cGU9
YmVmb3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRhPWBhYCwgZGF0YVRyYW5zZmVy
PWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFRleHQsIGRh
dGE9YGFgLCBkYXRhVHJhbnNmZXI9YG51bGxgCitUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlzIG5v
dzogYQorCitSZXBsYWNpbmcgJ2EnIHdpdGggJ2InLi4uCisoZWRpdGFibGUpOiB0eXBlPWJlZm9y
ZWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFjZW1lbnRUZXh0LCBkYXRhPWBiYCwgZGF0YVRy
YW5zZmVyPWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRUeXBlPWluc2VydFJl
cGxhY2VtZW50VGV4dCwgZGF0YT1gYmAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKK1RoZSB2YWx1ZSBv
ZiB0aGUgaW5wdXQgaXMgbm93OiBiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTU0YmM1NTg3MTNlMDI4MjkwM2ZmNWM2ODMwOTY5MmUzN2M0ZWRhZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KyAgICA8aW5wdXQgaWQ9ImVkaXRhYmxlIiBvbmJlZm9yZWlucHV0PWxvZ0lucHV0RXZlbnQoZXZl
bnQpIG9uaW5wdXQ9bG9nSW5wdXRFdmVudChldmVudCk+PC9pbnB1dD4KKyAgICA8ZGl2IGlkPSJv
dXRwdXQiPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgbGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAg
ICAgIHZhciBwcm9ncmVzcyA9IDA7CisgICAgICAgIGVkaXRhYmxlLmZvY3VzKCk7CisKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlR5cGluZyAn
YScuLi4iKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIik7CisgICAg
ICAgICAgICAgICAgd3JpdGUoYFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgaXMgbm93OiAke2VkaXRh
YmxlLnZhbHVlfWApOworICAgICAgICAgICAgICAgIHdyaXRlKCIiKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZSgiUmVwbGFjaW5nICdhJyB3aXRoICdiJy4uLiIpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgKHJlc3VsdCkgPT4gaW5jcmVtZW50
UHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB3cml0ZSgiVG8gbWFudWFsbHkgdGVzdCwgcHJlc3MgYW5kIGhvbGQgZG93biAnYScgYW5kIHNl
bGVjdCBvbmUgb2YgdGhlIGFjY2VudGVkIGNoYXJhY3RlcnMuIik7CisgICAgICAgICAgICB3cml0
ZSgiWW91IHNob3VsZCBvYnNlcnZlIGEgcGFpciBvZiBiZWZvcmVpbnB1dC9pbnB1dCBldmVudHMg
Zm9yIGJvdGggJ2EnIGFuZCB0aGUgcmVwbGFjZW1lbnQgYWNjZW50ZWQgY2hhcmFjdGVyLiIpOwor
ICAgICAgICAgICAgd3JpdGUoIkltcG9ydGFudGx5LCB0aGUgaW5wdXRUeXBlIG9mIHRoZSBsYXN0
IHR3byBldmVudHMgc2hvdWxkIGJlICdpbnNlcnRSZXBsYWNlbWVudFRleHQnLiIpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50UHJvZ3Jlc3MoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBwcm9ncmVzcysrOworICAgICAgICAgICAgaWYgKHByb2dyZXNzICE9IDUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB3cml0ZShgVGhlIHZhbHVlIG9m
IHRoZSBpbnB1dCBpcyBub3c6ICR7ZWRpdGFibGUudmFsdWV9YCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvZ0lu
cHV0RXZlbnQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRlKGAoJHtldmVudC50
YXJnZXQuaWR9KTogdHlwZT0ke2V2ZW50LnR5cGV9LCBpbnB1dFR5cGU9JHtldmVudC5pbnB1dFR5
cGV9LCBkYXRhPVxgJHtldmVudC5kYXRhfVxgLCBkYXRhVHJhbnNmZXI9XGAke2V2ZW50LmRhdGFU
cmFuc2Zlcn1cYGApOworICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGAKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIuaW5zZXJ0VGV4dCgiYiIsIDAsIDEpOworICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9KSgpO2AKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAxODVmYmRjNGEzZDljZjI3ODRlMWRiMjBjY2ZmNDI5OWVlMzIzYmM2
Li5hNGY1NWUwODIzMzIwZjA3YmIwMTVjY2EyNTk4MGFjYjIzZGYzMmI2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjAyLDYgKzEyMDIsNyBAQCBmYXN0L2V2ZW50cy9mcmFtZS1zY3JvbGwtZmFrZS1tb3VzZS1tb3Zl
Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2ZyYW1lLXRhYi1mb2N1cy5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5ZG93bi1jYW5j
ZWwuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxh
Y2VtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1kcmFnLWFu
ZC1kcm9wLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1pbnNlcnQt
YnktZHJvcC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQt
d2hlbi10eXBpbmcuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTIxMiw2ICsxMjEzLDcgQEAgZmFzdC9l
dmVudHMvaW5wdXQtZXZlbnRzLWltZS1yZWNvbXBvc2l0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGZh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy1pbWUtY29tcG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLXJpY2gtZGF0YXRyYW5zZmVyLmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zcGVsbC1jaGVja2luZy1kYXRhdHJh
bnNmZXIuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQt
aW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRz
L2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0LWluLXRleHRmaWVsZC5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLWRpZmZlcmVudC1zdGFy
dC1lbmQtZWxlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNlMDM3YjNhMjJjOTRjY2RiNzAwYjFjN2M3
YmE0NTMxNzljNmRhZWQuLjcxMmIxYmI4MWI1NmFhNjZlMTU4OGVkNWY2Nzg3YjNlYWRlYWU4NTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTg0LDYgKzg0LDEwIEBAIGZhc3QvZm9ybXMvZmlsZS9vcGVuLWZpbGUtcGFuZWwuaHRtbCBbIFNr
aXAgXQogIyBXSzEgYW5kIFdLMiBtb3VzZW1vdmUgZXZlbnRzIGFyZSBzdWJ0bHkgZGlmZmVyZW50
IGluIHdheXMgdGhhdCBicmVhayB0aGlzIHRlc3Qgb24gV0sxLgogZmFzdC9ldmVudHMvZ2hvc3Rs
eS1tb3VzZW1vdmVzLWluLXN1YmZyYW1lLmh0bWwgWyBTa2lwIF0KIAorIyBUZXN0IHN1cHBvcnQg
Zm9yIGluc2VydGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBv
biBXSzEuCitmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1l
bnQuaHRtbCBbIFNraXAgXQorZmFzdC9ldmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2Vt
ZW50Lmh0bWwgWyBTa2lwIF0KKwogIyBNZWRpYSBTdHJlYW0gQVBJIHRlc3RpbmcgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV0sxIHlldC4KIGZhc3QvbWVkaWFzdHJlYW0KIGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc3RyZWFtCg==
</data>
<flag name="review"
          id="316269"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293418</attachid>
            <date>2016-10-31 07:39:18 -0700</date>
            <delta_ts>2016-10-31 08:14:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164209-20161031073526.patch</filename>
            <type>text/plain</type>
            <size>24551</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkzOGIyNjJkNDRlODI3
NTFlMWE2NWQ1YWZmYjA4YTc5NjUwNzdiZS4uNDc3ZTg5NzUyYjZkZjk4MWFmMmQyZTJhMWQ1ZjFk
NjFlZGRjNGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEhvbGRpbmcgZG93
biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNob3VsZCBmaXJlICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBG
b3IgVHlwaW5nQ29tbWFuZHMgdGhhdCBjb3JyZXNwb25kIHRvICJpbnNlcnRSZXBsYWNlbWVudFRl
eHQiIGlucHV0VHlwZXMsIHZlbmQgZGF0YVRyYW5zZmVycyBmb3IgcmVzdWx0aW5nCisgICAgICAg
IGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgaWYgdGhlIGVkaXRlZCBhcmVhIGlzIG5vdCBh
biBpbnB1dCBmaWVsZCBvciB0ZXh0YXJlYS4gVG8gZG8gdGhpcywgY29udmVydCB0aGUgcGxhaW4K
KyAgICAgICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udGVudCB0byBiZSBpbnNlcnRl
ZCB0byBIVE1MIHRleHQgdXNpbmcgYSBoZWxwZXIgZnVuY3Rpb24sCisgICAgICAgIE1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMsIHRoYXQgaXMgdXNl
ZCB3aGVuIGNyZWF0aW5nIG1hcmt1cCBmb3IgVGV4dCBub2Rlcy4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVu
dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2Zlcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmg6CisKIDIwMTYtMTAtMjkgIERhdmUgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIEZpeCB0cmFuc2Zvcm0tb3JpZ2luIGFu
ZCBwZXJzcGVjdGl2ZS1vcmlnaW4gdG8gcGFyc2UgYXMgc2hvcnRoYW5kcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDQzNTQ5ZDNlYzY0MmI2NDI5MDA4NTUxNjRjNjkxZDIyMzc3ZDFhZGEuLmIyNmUwNWIwZDMzNmI0
ZjAxNmQyNTU1MjEwNDFmZDYwMGI0N2ZkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNi0xMC0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBIb2xkaW5nIGRvd24gYSBrZXkgdG8gY2hvb3NlIGFuIGFjY2VudGVkIGNoYXJhY3RlciBz
aG91bGQgZmlyZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IiBpbnB1dCBldmVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjkwMTkzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgV2hlbiByZXBsYWNpbmcgdGV4dCwgY2FsbCBFZGl0b3I6Omluc2VydFRl
eHQgd2l0aCB0aGUgY29ycmVjdCBUZXh0RXZlbnRJbnB1dFR5cGUgc28gdGhhdCBXZWJDb3JlIHdp
bGwga25vdyB0bworICAgICAgICB1c2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50IHdoZW4g
Y3JlYXRpbmcgYW5kIGFwcGx5aW5nIHRoZSBjb3JyZXNwb25kaW5nIFR5cGluZ0NvbW1hbmQuIEFk
ZGl0aW9uYWwgbWlub3IKKyAgICAgICAgY2hhbmdlcyBpbiBvcmRlciB0byBzdXBwb3J0IHRlc3Rp
bmcgcmVwbGFjZW1lbnQgdGV4dCBpbnNlcnRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRUZXh0OnJl
cGxhY2VtZW50UmFuZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMpOgorCiAyMDE2LTEwLTI4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGFsbCBjbGFz
c2VzIGluIHRoZSBIVE1MIGRpcmVjdG9yeSBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA5ZTgwMmE0NjAz
NDIyNDkwYzkzOWE0ODEyZjUzOWE0ZmI2ZTk1ZjBiLi5kOTMzZGI1MWRkMTNhZjI4MTMyYTdhNWU4
Y2U2MjdmYmRhZGRjZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNs
dWRlICJCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmgiCisjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgi
CiAjaW5jbHVkZSAiRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFRleHRDb21t
YW5kLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxhdG9y
LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgpAQCAtNDA2LDE1ICs0MDgsMjYgQEAgU3RyaW5n
IFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1f
Y3VycmVudFR5cGluZ0VkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNl
cnRUZXh0OgotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50OgogICAgIGNhc2Ug
RWRpdEFjdGlvblR5cGluZ0luc2VydFBlbmRpbmdDb21wb3NpdGlvbjoKICAgICBjYXNlIEVkaXRB
Y3Rpb25UeXBpbmdJbnNlcnRGaW5hbENvbXBvc2l0aW9uOgogICAgICAgICByZXR1cm4gbV9jdXJy
ZW50VGV4dFRvSW5zZXJ0OworICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50Ogor
ICAgICAgICByZXR1cm4gaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpID8gbV9jdXJyZW50
VGV4dFRvSW5zZXJ0IDogU3RyaW5nKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpOwogICAgIH0KIH0KIAorUmVmUHRy
PERhdGFUcmFuc2Zlcj4gVHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb24gIT0gRWRpdEFjdGlvbklu
c2VydFJlcGxhY2VtZW50IHx8IGlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdCdWlsZGVyIGh0bWxUZXh0OworICAgIE1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoaHRtbFRl
eHQsIG1fY3VycmVudFRleHRUb0luc2VydCwgMCwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0Lmxlbmd0
aCgpLCBFbnRpdHlNYXNrSW5IVE1MUENEQVRBKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JJbnB1dEV2ZW50KG1fY3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJp
bmcoKSk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKIHsKICAg
ICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5nIHNlcGFyYXRlbHkgKHNl
ZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAppbmRleCBiOTQwMWI1ZWU2NjIzZWUxNGUwNDUyNzM3Njhm
NzgzZDM2NmI3ZTkwLi40MTM5YmQxODc4NzMwOWQwNzA3Nzk4Y2IxODY4YmU3ZDlhYjQwYzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaApAQCAtMTIwLDYgKzEyMCw3IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgaW5wdXRFdmVudFR5cGVOYW1lKCkgY29uc3QgZmluYWw7
CiAgICAgU3RyaW5nIGlucHV0RXZlbnREYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gaW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgaXNCZWZvcmVJbnB1dEV2ZW50Q2FuY2VsYWJsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgc3Rh
dGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlvbihU
eXBpbmdDb21tYW5kKiwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZGZjYzg5Y2E2YWQ2Y2VhZWEzMDliMWZjYjAx
MzQ5MGE2OWQwOS4uZmU0NDMxNzk5MGIxNDlhZmRiMjk4MzNlZTU4YzI3Y2MzOTIzZmJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTQ2NTAsNiArNDY1MCwxMSBAQCAtICh2b2lkKV9oYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lv
bkluZm9SZXNwb25zZTooQk9PTCloYXNBY3RpdmVTZXNzaW9uIHRpdGxlOgogewogICAgIC8vIE92
ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KIH0KKworLSAodm9pZClfaW5zZXJ0VGV4dDooaWQpc3Ry
aW5nIHJlcGxhY2VtZW50UmFuZ2U6KE5TUmFuZ2UpcmVwbGFjZW1lbnRSYW5nZQoreworICAgIFtz
ZWxmIGluc2VydFRleHQ6c3RyaW5nIHJlcGxhY2VtZW50UmFuZ2U6cmVwbGFjZW1lbnRSYW5nZV07
Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENH
RmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggN2Uy
ZTYyNzgyNzhhOGY0ZTNmNmUwYzkzMmFhZDc3OTQwZjMxZjFkMC4uZWFiMjliNDMxYzk1YTc4ZmNk
NjllODk3ZDY3NzUxOGY2ZDY3ZTg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI5MCw2ICsyOTAsOCBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFJlcXVlc3RDYW5kaWRhdGVz
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3JlcXVlc3RB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSkpOwogLSAodm9pZClfaGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9u
c2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSBkdXJhdGlv
bjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihkb3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworCistICh2b2lkKV9pbnNlcnRUZXh0Oihp
ZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5nZSlyZXBsYWNlbWVudFJhbmdlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKICNlbmRpZgogCiAtICh2b2lkKV9zZXRQ
YWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW4gV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg0OWIzYTI2NmUzODNjMDZkNzE4ZGQ2YTMwOGFh
MzY4NTQ4ZWQzNjcuLmQwOTAwMTU3OTlhZTkxNDNiODI2MTMxMTY5NGJkZTdhZTFjNWM2ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ2
MjUsMTEgKzQ2MjUsMTMgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KIHsKICAgICBGcmFtZSYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
CisgICAgYm9vbCByZXBsYWNlc1RleHQgPSBmYWxzZTsKICAgICBpZiAocmVwbGFjZW1lbnRFZGl0
aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBy
ZXBsYWNlbWVudFJhbmdlID0gcmFuZ2VGcm9tRWRpdGluZ1JhbmdlKGZyYW1lLCByZXBsYWNlbWVu
dEVkaXRpbmdSYW5nZSwgc3RhdGljX2Nhc3Q8RWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvPihlZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8pKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpIHsK
ICAgICAgICAgICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBpc1NlbGVjdGluZ1RleHRXaGlsZUlu
c2VydGluZ0FzeW5jaHJvbm91c2x5KG1faXNTZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3lu
Y2hyb25vdXNseSwgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpOwogICAgICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFu
Z2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICByZXBsYWNlc1RleHQgPSB0
cnVlOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNDYzOSw3ICs0NjQxLDcgQEAgdm9pZCBX
ZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW4KICAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9u
KCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhl
ciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAg
IC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRv
d24gdGhlIHBhZ2UuCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQodGV4dCwgbnVs
bHB0cik7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQodGV4dCwgbnVsbHB0ciwg
cmVwbGFjZXNUZXh0ID8gVGV4dEV2ZW50SW5wdXRBdXRvY29tcGxldGlvbiA6IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQpOwogICAgIH0gZWxzZQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb25maXJt
Q29tcG9zaXRpb24odGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMDMxYmExZGRlZGE2MGU2NmUzZTBiOTE5YmEwN2ZkYzYxNTg2MmYx
MS4uOGI2YWI4YzkzOWQ4ODg3MzZkMDE2MDdmYTUyN2M2YTllZmViZDhiOSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisy
MDE2LTEwLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHNo
b3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBBZGRzIHRlc3Qgc3VwcG9ydCBmb3IgaW5zZXJ0aW5nIHJlcGxhY2VtZW50
IHRleHQgb24gTWFjLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gaG9sZGluZyBkb3duIGEgdm93ZWwg
a2V5IChlLmcuCisgICAgICAgICdhJykgdG8gYnJpbmcgdXAgdGhlIG1lbnUgY29udGFpbmluZyBh
Y2NlbnRlZCB2ZXJzaW9uIG9mIHRoZSBjaGFyYWN0ZXIsIHRoZW4gc2VsZWN0aW5nIGFuIGFjY2Vu
dGVkIGNoYXJhY3RlciB0bworICAgICAgICBpbnNlcnQgaW4gcGxhY2Ugb2YgdGhlIHR5cGVkIGNo
YXJhY3Rlci4gVGhpcyBpcyBleHBvc2VkIHZpYSBVSVNjcmlwdENvbnRyb2xsZXIuaW5zZXJ0VGV4
dCwgd2hpY2ggdGFrZXMgYSBzdHJpbmcKKyAgICAgICAgYW5kIGFuIGluc2VydGlvbiByYW5nZS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAgICAg
ICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250
cm9sbGVyLmlkbDoKKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gY2FsbGJhY2sgYXJn
dW1lbnQgdG8gaW5zZXJ0VGV4dCwgc2luY2UgVUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0
IGlzIHN5bmNocm9ub3VzIGluCisgICAgICAgIHRoZSBVSSBwcm9jZXNzLiBUaGUgdGVzdHMgZW5k
IHdoZW4gY29ycmVzcG9uZGluZyBpbnB1dCBldmVudHMgZmlyZWQgYXMgYSByZXN1bHQgb2YgaW5z
ZXJ0VGV4dCBoYXZlIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgaW4gdGhlIHdlYiBwcm9jZXNzLiBQ
bGVhc2Ugc2VlIHRoZSBuZXcgbGF5b3V0IHRlc3RzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tOgorICAgICAgICAoV1RSOjpuc1N0cmluZ0Zyb21KU1N0cmluZyk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dCk6CisKIDIwMTYtMTAtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tIHNob3VsZCBub3QgYmUgc29mdC1saW5raW5nIFVJS2l0CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA1NmUyMDc3
YTRiMmEyMGMxZGI5MWRjOWExMGJkZGU1ZjIyY2M2NDBiLi4xOTBlYzE0ZDg1MGRhNDVlMGYxMTM2
NjU5M2RhNjFiMmM1ZDAyYmNkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTQzLDYgKzQzLDEwIEBAIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQog
Cit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1JlZiwgaW50LCBp
bnQpCit7Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5k
aW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4IDJlYzk0OTg1NWRhZjg4ZGVmNzRiMjk2
MGYzNTIzOTk5MDM5ZDU1ODguLjMwZjYxN2ZlMmU2Y2M1MjA1ZTJjM2I5Njk0ZDA2MDI5YmYzMjcz
Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtMTU2
LDUgKzE1Niw3IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIG9iamVjdCBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0czsgLy8gQW4gYXJyYXkg
b2Ygb2JqZWN0cyB3aXRoICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcsIGFuZCAnaGVpZ2h0JyBwcm9w
ZXJ0aWVzLgogCisgICAgdm9pZCBpbnNlcnRUZXh0KERPTVN0cmluZyB0ZXh0LCBsb25nIGxvY2F0
aW9uLCBsb25nIGxlbmd0aCk7CisKICAgICB2b2lkIHVpU2NyaXB0Q29tcGxldGUoRE9NU3RyaW5n
IHJlc3VsdCk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYTQ0ODI5NDkzNDE5
N2NlOWEwNWM2NzgwZGNlZmQ5OWI4YmE1NTYxYy4uMTM3NGU1ODJmOWUyOTU0MDI4NDM4YmNhYjBj
NjhlYmU1ZWU2YjVkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMTcsNiArMzE3
LDE0IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybUNsZWFyQWxsQ2FsbGJhY2tz
KCkKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKE1BQykKKwordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYsIGludCwgaW50KQoreworfQorCisjZW5kaWYK
Kwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnVpU2NyaXB0Q29tcGxldGUoSlNTdHJpbmdSZWYg
cmVzdWx0KQogewogICAgIG1fY29udGV4dC0+cmVxdWVzdFVJU2NyaXB0Q29tcGxldGlvbihyZXN1
bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkNmQ3OTQ2NTA1ZDdmNzQ3MDMwNGRiYTBj
ZGFmOTk0ZWU1ZGM0ODA3Li4xYzE2MTMzMzYyNzE5N2RlNzkxMjRhNjc3Y2Q5OTM1ODM3NjI4MjA2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTE3LDYgKzExNyw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICBKU09iamVjdFJlZiBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0OwogCisg
ICAgdm9pZCBpbnNlcnRUZXh0KEpTU3RyaW5nUmVmLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgp
OworCiAgICAgdm9pZCB1aVNjcmlwdENvbXBsZXRlKEpTU3RyaW5nUmVmIHJlc3VsdCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KaW5kZXggNGY2Y2NlYmE3ZDNmYjQwOTg1YTA2MjE3MjBjYjhhMWMwZWIyNDc1
ZC4uNzFiN2JhNWFkMjZiODEyZjk2M2MxOTVlZTI2ODJmOGU3ZDU4YWYyNSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAt
MjYsMTAgKzI2LDIwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29u
dHJvbGxlci5oIgogCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlRlc3RD
b250cm9sbGVyLmgiCisjaW1wb3J0ICJUZXN0UnVubmVyV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJV
SVNjcmlwdENvbnRleHQuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0Yu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAKIG5hbWVzcGFjZSBXVFIg
ewogCitOU1N0cmluZyAqbnNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVy
biAoTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHN0cmluZykpLmF1dG9yZWxlYXNlKCk7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNh
bGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxi
YWNrVHlwZU5vblBlcnNpc3RlbnQpOwpAQCAtNDEsNCArNTEsMTkgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAK
K3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQsIGlu
dCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIGlmIChs
b2NhdGlvbiA9PSAtMSkKKyAgICAgICAgbG9jYXRpb24gPSBOU05vdEZvdW5kOworCisgICAgYXV0
byogd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKTsKKyAgICBbd2ViVmlldyBfaW5zZXJ0VGV4dDpuc1N0cmluZyh0ZXh0KSBy
ZXBsYWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpXTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHRleHQpOworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7CisgICAg
VU5VU0VEX1BBUkFNKGxlbmd0aCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkNDRiZmFkOGZi
MmVkMzQ4YzkzMWE3ZTc5ZjkzYjliYWUwMzBmMWIuLjkyZjhhYWJkMWFlODAwOTU0NTE4OWZjNmRi
YmY5YWRlNWI4ODg0MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0zMSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBIb2xkaW5nIGRvd24g
YSBrZXkgdG8gY2hvb3NlIGFuIGFjY2VudGVkIGNoYXJhY3RlciBzaG91bGQgZmlyZSAiaW5zZXJ0
UmVwbGFjZW1lbnRUZXh0IiBpbnB1dCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkw
MTkzMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRk
cyAyIG5ldyBsYXlvdXQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgaW5zZXJ0aW5nIHJlcGxhY2VtZW50
IHRleHQgZmlyZXMgaW5wdXQgZXZlbnRzIG9mIGlucHV0VHlwZQorICAgICAgICAiaW5zZXJ0UmVw
bGFjZW1lbnRUZXh0IiBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljICJpbnNlcnRUZXh0IiwgYW5kIHRo
YXQgY2FsbGluZyBwcmV2ZW50RGVmYXVsdCgpIG9uIHRoZQorICAgICAgICBiZWZvcmVpbnB1dCBl
dmVudCBwcmV2ZW50cyB0ZXh0IGZyb20gYmVpbmcgaW5zZXJ0ZWQuIEFsc28gY2hlY2tzIHRoYXQg
aW5zZXJ0aW5nIHJlcGxhY2VtZW50IHRleHQgaW4KKyAgICAgICAgY29udGVudGVkaXRhYmxlIGFy
ZWFzIGNhdXNlcyB0aGUgZGF0YVRyYW5zZmVyIGF0dHJpYnV0ZSB0byBiZSBwb3B1bGF0ZWQsIGFu
ZCB0aGF0IHRoZSBkYXRhIGF0dHJpYnV0ZSBpcyBudWxsLgorCisgICAgICAgICogZmFzdC9ldmVu
dHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0
LXJlcGxhY2VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lucHV0LWV2
ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTEwLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGVzdGhhcm5l
c3MuanMvdGVzdGhhcm5lc3NyZXBvcnQuanMgdW5uZWNlc3NhcnkgY29waWVzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVw
bGFjZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlu
cHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NWEwMjE5NDkwYmM0NDBmMjVlNWQ3YTM3YTdhYTcyMTJkZDNiMDUwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJl
cGxhY2VtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2EKK1R5cGluZyAnYScuLi4K
KyhlZGl0YWJsZSk6IHR5cGU9YmVmb3JlaW5wdXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRh
PWBhYCwgZGF0YVRyYW5zZmVyPWBudWxsYAorKGVkaXRhYmxlKTogdHlwZT1pbnB1dCwgaW5wdXRU
eXBlPWluc2VydFRleHQsIGRhdGE9YGFgLCBkYXRhVHJhbnNmZXI9YG51bGxgCitBdHRlbXB0aW5n
IHRvIHJlcGxhY2UgJ2EnIHdpdGggJ2InLi4uCisoZWRpdGFibGUpOiB0eXBlPWJlZm9yZWlucHV0
LCBpbnB1dFR5cGU9aW5zZXJ0UmVwbGFjZW1lbnRUZXh0LCBkYXRhPWBudWxsYCwgZGF0YVRyYW5z
ZmVyPWBwbGFpbjoiYiIsIGh0bWw6ImIiYAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMGU3YjVjODYxN2RhNDg4NzZiOTZkOGQ2NGUwNzQ4OGIw
YTVkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtcHJldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbApAQCAtMCwwICsxLDYwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdGFibGUiIG9u
YmVmb3JlaW5wdXQ9aGFuZGxlSW5wdXRFdmVudChldmVudCkgb25pbnB1dD1oYW5kbGVJbnB1dEV2
ZW50KGV2ZW50KSBjb250ZW50ZWRpdGFibGU+PC9kaXY+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48
L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3
cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICB2YXIg
cHJvZ3Jlc3MgPSAwOworICAgICAgICBlZGl0YWJsZS5mb2N1cygpOworCisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIgJiYgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAgICAgIHdyaXRlKCJUeXBpbmcgJ2EnLi4uIik7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiYSIpOworICAgICAgICAgICAg
ICAgIHdyaXRlKCJBdHRlbXB0aW5nIHRvIHJlcGxhY2UgJ2EnIHdpdGggJ2InLi4uIik7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCAocmVzdWx0
KSA9PiBpbmNyZW1lbnRQcm9ncmVzcygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHdyaXRlKCJUbyBtYW51YWxseSB0ZXN0LCBwcmVzcyBhbmQgaG9sZCBk
b3duICdhJyBhbmQgc2VsZWN0IG9uZSBvZiB0aGUgYWNjZW50ZWQgY2hhcmFjdGVycy4iKTsKKyAg
ICAgICAgICAgIHdyaXRlKCJZb3Ugc2hvdWxkIG9ic2VydmUgdGhhdCB0aGUgcmVwbGFjZW1lbnQg
YWNjZW50ZWQgY2hhcmFjdGVyIGRvZXMgbm90IHJlcGxhY2UgJ2EnLiIpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50UHJvZ3Jlc3MoKQorICAgICAgICB7CisgICAgICAg
ICAgICBwcm9ncmVzcysrOworICAgICAgICAgICAgaWYgKHByb2dyZXNzID09IDIpCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBoYW5kbGVJbnB1dEV2ZW50KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB3
cml0ZShgKCR7ZXZlbnQudGFyZ2V0LmlkfSk6IHR5cGU9JHtldmVudC50eXBlfSwgaW5wdXRUeXBl
PSR7ZXZlbnQuaW5wdXRUeXBlfSwgZGF0YT1cYCR7ZXZlbnQuZGF0YX1cYCwgZGF0YVRyYW5zZmVy
PVxgJHtkYXRhVHJhbnNmZXJBc1N0cmluZyhldmVudC5kYXRhVHJhbnNmZXIpfVxgYCk7CisgICAg
ICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0Iikg
eworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAg
ICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGRhdGFUcmFuc2ZlckFzU3RyaW5nKGRhdGFUcmFuc2ZlcikKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJu
ICJudWxsIjsKKworICAgICAgICAgICAgcmV0dXJuIGBwbGFpbjoiJHtkYXRhVHJhbnNmZXIuZ2V0
RGF0YSgndGV4dC9wbGFpbicpfSIsIGh0bWw6IiR7ZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQv
aHRtbCcpfSJgOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbnNlcnRUZXh0KCJiIiwgMCwgMSk7Cisg
ICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKKyAgICAgICAg
ICAgIH0pKCk7YAorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5wdXQtZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2NjZGFiMzhhMDQ5Y2QxYTI1Mzc0MDk2ZDZlNjJkYjQyMmMxYWJm
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50
LWluc2VydC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitUeXBp
bmcgJ2EnLi4uCisoZWRpdGFibGUpOiB0eXBlPWJlZm9yZWlucHV0LCBpbnB1dFR5cGU9aW5zZXJ0
VGV4dCwgZGF0YT1gYWAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKKyhlZGl0YWJsZSk6IHR5cGU9aW5w
dXQsIGlucHV0VHlwZT1pbnNlcnRUZXh0LCBkYXRhPWBhYCwgZGF0YVRyYW5zZmVyPWBudWxsYAor
VGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBpcyBub3c6IGEKKworUmVwbGFjaW5nICdhJyB3aXRoICdi
Jy4uLgorKGVkaXRhYmxlKTogdHlwZT1iZWZvcmVpbnB1dCwgaW5wdXRUeXBlPWluc2VydFJlcGxh
Y2VtZW50VGV4dCwgZGF0YT1gYmAsIGRhdGFUcmFuc2Zlcj1gbnVsbGAKKyhlZGl0YWJsZSk6IHR5
cGU9aW5wdXQsIGlucHV0VHlwZT1pbnNlcnRSZXBsYWNlbWVudFRleHQsIGRhdGE9YGJgLCBkYXRh
VHJhbnNmZXI9YG51bGxgCitUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGlzIG5vdzogYgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudC1pbnNlcnQtcmVwbGFj
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1y
ZXBsYWNlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NGJjNTU4NzEzZTAyODI5MDNmZjVjNjgzMDk2
OTJlMzdjNGVkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
bnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPGlucHV0IGlkPSJlZGl0YWJsZSIgb25i
ZWZvcmVpbnB1dD1sb2dJbnB1dEV2ZW50KGV2ZW50KSBvbmlucHV0PWxvZ0lucHV0RXZlbnQoZXZl
bnQpPjwvaW5wdXQ+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0Lmlu
bmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICB2YXIgcHJvZ3Jlc3MgPSAwOworICAgICAg
ICBlZGl0YWJsZS5mb2N1cygpOworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5w
dXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIgJiYgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAg
ICAgICAgICAgICAgIHdyaXRlKCJUeXBpbmcgJ2EnLi4uIik7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiYSIpOworICAgICAgICAgICAgICAgIHdyaXRlKGBUaGUgdmFsdWUg
b2YgdGhlIGlucHV0IGlzIG5vdzogJHtlZGl0YWJsZS52YWx1ZX1gKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZSgiIik7CisgICAgICAgICAgICAgICAgd3JpdGUoIlJlcGxhY2luZyAnYScgd2l0aCAn
YicuLi4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2Ny
aXB0KCksIChyZXN1bHQpID0+IGluY3JlbWVudFByb2dyZXNzKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3JpdGUoIlRvIG1hbnVhbGx5IHRlc3QsIHBy
ZXNzIGFuZCBob2xkIGRvd24gJ2EnIGFuZCBzZWxlY3Qgb25lIG9mIHRoZSBhY2NlbnRlZCBjaGFy
YWN0ZXJzLiIpOworICAgICAgICAgICAgd3JpdGUoIllvdSBzaG91bGQgb2JzZXJ2ZSBhIHBhaXIg
b2YgYmVmb3JlaW5wdXQvaW5wdXQgZXZlbnRzIGZvciBib3RoICdhJyBhbmQgdGhlIHJlcGxhY2Vt
ZW50IGFjY2VudGVkIGNoYXJhY3Rlci4iKTsKKyAgICAgICAgICAgIHdyaXRlKCJJbXBvcnRhbnRs
eSwgdGhlIGlucHV0VHlwZSBvZiB0aGUgbGFzdCB0d28gZXZlbnRzIHNob3VsZCBiZSAnaW5zZXJ0
UmVwbGFjZW1lbnRUZXh0Jy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluY3Jl
bWVudFByb2dyZXNzKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3Jlc3MrKzsKKyAgICAg
ICAgICAgIGlmIChwcm9ncmVzcyAhPSA1KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgd3JpdGUoYFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgaXMgbm93OiAke2VkaXRhYmxl
LnZhbHVlfWApOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBsb2dJbnB1dEV2ZW50KGV2ZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB3cml0ZShgKCR7ZXZlbnQudGFyZ2V0LmlkfSk6IHR5cGU9JHtldmVudC50eXBl
fSwgaW5wdXRUeXBlPSR7ZXZlbnQuaW5wdXRUeXBlfSwgZGF0YT1cYCR7ZXZlbnQuZGF0YX1cYCwg
ZGF0YVRyYW5zZmVyPVxgJHtldmVudC5kYXRhVHJhbnNmZXJ9XGBgKTsKKyAgICAgICAgICAgIGlu
Y3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBnZXRVSVNj
cmlwdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBgCisgICAgICAgICAgICAoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmluc2VydFRleHQoImIiLCAw
LCAxKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwor
ICAgICAgICAgICAgfSkoKTtgCisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTg1ZmJkYzRhM2Q5
Y2YyNzg0ZTFkYjIwY2NmZjQyOTllZTMyM2JjNi4uYTRmNTVlMDgyMzMyMGYwN2JiMDE1Y2NhMjU5
ODBhY2IyM2RmMzJiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVs
YXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11
bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIwMiw2ICsxMjAyLDcgQEAgZmFzdC9ldmVudHMv
ZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50
cy9mcmFtZS10YWItZm9jdXMuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW1lLWNvbXBv
c2l0aW9uLWV2ZW50cy0wMDEuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXRUZXh0
LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2VsLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZl
bnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0
L2V2ZW50cy9pbnB1dC1ldmVudHMtZHJhZy1hbmQtZHJvcC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0
L2V2ZW50cy9pbnB1dC1ldmVudHMtaW5zZXJ0LWJ5LWRyb3AuaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5nLmh0bWwgWyBGYWlsdXJlIF0K
QEAgLTEyMTIsNiArMTIxMyw3IEBAIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1pbWUtcmVjb21w
b3NpdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW1lLWNv
bXBvc2l0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0
ZS1yaWNoLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1l
dmVudHMtc3BlbGwtY2hlY2tpbmctZGF0YXRyYW5zZmVyLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3Qv
ZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtZGVmYXVsdC5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQt
ZGVmYXVsdC1pbi10ZXh0ZmllbGQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvYmVmb3Jl
LWlucHV0LWV2ZW50cy1kaWZmZXJlbnQtc3RhcnQtZW5kLWVsZW1lbnRzLmh0bWwgWyBGYWlsdXJl
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBjZTAzN2IzYTIyYzk0Y2NkYjcwMGIxYzdjN2JhNDUzMTc5YzZkYWVkLi43MTJiMWJiODFiNTZh
YTY2ZTE1ODhlZDVmNjc4N2IzZWFkZWFlODUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04NCw2ICs4NCwxMCBAQCBmYXN0L2Zvcm1zL2Zp
bGUvb3Blbi1maWxlLXBhbmVsLmh0bWwgWyBTa2lwIF0KICMgV0sxIGFuZCBXSzIgbW91c2Vtb3Zl
IGV2ZW50cyBhcmUgc3VidGx5IGRpZmZlcmVudCBpbiB3YXlzIHRoYXQgYnJlYWsgdGhpcyB0ZXN0
IG9uIFdLMS4KIGZhc3QvZXZlbnRzL2dob3N0bHktbW91c2Vtb3Zlcy1pbi1zdWJmcmFtZS5odG1s
IFsgU2tpcCBdCiAKKyMgVGVzdCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgc3BlY2lhbCBjaGFyYWN0
ZXJzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gV0sxLgorZmFzdC9ldmVudHMvYmVmb3JlLWlu
cHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvZXZlbnRz
L2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIFsgU2tpcCBdCisKICMgTWVkaWEg
U3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdLMSB5ZXQuCiBmYXN0L21l
ZGlhc3RyZWFtCiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>