<?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>160895</bug_id>
          
          <creation_ts>2016-08-16 00:56:36 -0700</creation_ts>
          <short_desc>[Cocoa] Migrate off of deprecated CoreGraphics API CGContextSelectFont() and CGContextShowTextAtPoint()</short_desc>
          <delta_ts>2016-08-19 15:14:41 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>pvollan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220406</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 00:56:36 -0700</bug_when>
    <thetext>[Cocoa] Migrate off of deprecated CoreGraphics API CGContextSelectFont() and CGContextShowTextAtPoint()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220409</commentid>
    <comment_count>1</comment_count>
      <attachid>286164</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 00:58:23 -0700</bug_when>
    <thetext>Created attachment 286164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220429</commentid>
    <comment_count>2</comment_count>
      <attachid>286164</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-16 06:53:34 -0700</bug_when>
    <thetext>Comment on attachment 286164
Patch

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

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:137
&gt;  // This function is needed to work around a bug in Windows CG &lt;rdar://problem/22703470&gt;
&gt;  void PlatformCALayer::drawTextAtPoint(CGContextRef context, CGFloat x, CGFloat y, CGSize scale, CGFloat fontSize, const char* text, size_t length) const
&gt;  {
&gt; -#pragma clang diagnostic push
&gt; -#pragma clang diagnostic ignored &quot;-Wdeprecated-declarations&quot;
&gt; -    CGContextSetTextMatrix(context, CGAffineTransformMakeScale(scale.width, scale.height));
&gt; -    CGContextSelectFont(context, &quot;Helvetica&quot;, fontSize, kCGEncodingMacRoman);
&gt; -    CGContextShowTextAtPoint(context, x, y, text, length);
&gt; -#pragma clang diagnostic pop
&gt; +    CGAffineTransform matrix = CGAffineTransformMakeScale(scale.width, scale.height);
&gt; +    RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), fontSize, &amp;matrix));
&gt; +    CFTypeRef keys[] = { kCTFontAttributeName };
&gt; +    CFTypeRef values[] = { font.get() };
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +    RetainPtr&lt;CFStringRef&gt; string = adoptCF(CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UInt8*&gt;(text), length, kCFStringEncodingUTF8, false, kCFAllocatorNull));
&gt; +    RetainPtr&lt;CFAttributedStringRef&gt; attributedString = adoptCF(CFAttributedStringCreate(kCFAllocatorDefault, string.get(), attributes.get()));
&gt; +    RetainPtr&lt;CTLineRef&gt; line = adoptCF(CTLineCreateWithAttributedString(attributedString.get()));
&gt; +    CGPoint textPosition = CGContextGetTextPosition(context);
&gt; +    CGContextSetTextPosition(context, x, y);
&gt; +    CTLineDraw(line.get(), context);

I don&apos;t think CoreText exists on Windows, so this probably won&apos;t compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220692</commentid>
    <comment_count>3</comment_count>
      <attachid>286164</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 17:58:52 -0700</bug_when>
    <thetext>Comment on attachment 286164
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:137
&gt;&gt; +    CTLineDraw(line.get(), context);
&gt; 
&gt; I don&apos;t think CoreText exists on Windows, so this probably won&apos;t compile.

Hrm. I see CoreText.dll inside the Apple Application Support folder (next to CoreGraphics.dll, etc.), and CoreText.lib inside WebKitSupportLibrary. It looks like the headers inside WebKitSupportLibrary are incomplete, but running dumpbin.exe on CoreText.lib makes it seem that the functions do exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220729</commentid>
    <comment_count>4</comment_count>
      <attachid>286256</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-16 19:33:46 -0700</bug_when>
    <thetext>Created attachment 286256
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220833</commentid>
    <comment_count>5</comment_count>
      <attachid>286291</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 01:57:25 -0700</bug_when>
    <thetext>Created attachment 286291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220838</commentid>
    <comment_count>6</comment_count>
      <attachid>286294</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 03:16:45 -0700</bug_when>
    <thetext>Created attachment 286294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220868</commentid>
    <comment_count>7</comment_count>
      <attachid>286302</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 09:23:10 -0700</bug_when>
    <thetext>Created attachment 286302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220943</commentid>
    <comment_count>8</comment_count>
      <attachid>286321</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 13:30:12 -0700</bug_when>
    <thetext>Created attachment 286321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220968</commentid>
    <comment_count>9</comment_count>
      <attachid>286321</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-08-17 14:58:32 -0700</bug_when>
    <thetext>Comment on attachment 286321
Patch

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

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:260
&gt;  #if PLATFORM(IOS)
&gt; -    CGContextSelectFont(context, &quot;Courier&quot;, 10, kCGEncodingMacRoman);
&gt; +    CFStringRef fontName = CFSTR(&quot;Courier&quot;);
&gt; +    CGFloat fontSize = 10;

Why Courier on iOS? And why Menlo elsewhere? Can&apos;t we use SF on iOS and where available on macOS?

&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:598
&gt; +        RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), 25, &amp;matrix));

We can probably use SF or Menlo here too.

&gt; Source/WebCore/platform/spi/win/CoreTextSPIWin.h:2
&gt; +/*
&gt; + * Copyright (C) 2016 Apple Inc. All rights reserved.

Why spi/win/CoreTextSPIWin.h?

Can we just merge this with an existing CoreTextSPI.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220971</commentid>
    <comment_count>10</comment_count>
      <attachid>286321</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 15:05:15 -0700</bug_when>
    <thetext>Comment on attachment 286321
Patch

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

&gt;&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:260
&gt;&gt; +    CGFloat fontSize = 10;
&gt; 
&gt; Why Courier on iOS? And why Menlo elsewhere? Can&apos;t we use SF on iOS and where available on macOS?

That choice was in the existing code; this patch simply migrates the existing code to non-deprecated calls.

&gt;&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:598
&gt;&gt; +        RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), 25, &amp;matrix));
&gt; 
&gt; We can probably use SF or Menlo here too.

Ditto.

&gt;&gt; Source/WebCore/platform/spi/win/CoreTextSPIWin.h:2
&gt;&gt; + * Copyright (C) 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Why spi/win/CoreTextSPIWin.h?
&gt; 
&gt; Can we just merge this with an existing CoreTextSPI.h?

CoreTextSPI.h is inside cocoa/

I could move it out, but there would be a ton of new things needing to be forward-declared in order to just get CoreTextSPI.h to compile on Windows. I think that keeping this simple is a good idea, given the very different requirements of Windows and macOS/iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220973</commentid>
    <comment_count>11</comment_count>
      <attachid>286321</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 15:06:20 -0700</bug_when>
    <thetext>Comment on attachment 286321
Patch

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

&gt;&gt;&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:260
&gt;&gt;&gt; +    CGFloat fontSize = 10;
&gt;&gt; 
&gt;&gt; Why Courier on iOS? And why Menlo elsewhere? Can&apos;t we use SF on iOS and where available on macOS?
&gt; 
&gt; That choice was in the existing code; this patch simply migrates the existing code to non-deprecated calls.

What I mean to say is: switching out the fonts is a good idea, but not for this patch. This patch has no behavior changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221055</commentid>
    <comment_count>12</comment_count>
      <attachid>286321</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 22:10:15 -0700</bug_when>
    <thetext>Comment on attachment 286321
Patch

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

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:266
&gt; +    CFTypeRef keys[] = { kCTFontAttributeName };

kCTForegroundColorFromContextAttributeName

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:133
&gt; +    CFTypeRef keys[] = { kCTFontAttributeName };

kCTForegroundColorFromContextAttributeName

&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:599
&gt; +        CFTypeRef keys[] = { kCTFontAttributeName };

kCTForegroundColorFromContextAttributeName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221056</commentid>
    <comment_count>13</comment_count>
      <attachid>286363</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-17 22:19:10 -0700</bug_when>
    <thetext>Created attachment 286363
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221062</commentid>
    <comment_count>14</comment_count>
      <attachid>286363</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-17 23:39:51 -0700</bug_when>
    <thetext>Comment on attachment 286363
Patch for committing

Clearing flags on attachment: 286363

Committed r204592: &lt;http://trac.webkit.org/changeset/204592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221072</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-08-18 01:02:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 286363 [details]
&gt; Patch for committing
&gt; 
&gt; Clearing flags on attachment: 286363
&gt; 
&gt; Committed r204592: &lt;http://trac.webkit.org/changeset/204592&gt;

It broke the WinCairo build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221448</commentid>
    <comment_count>16</comment_count>
      <attachid>286363</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-19 13:10:08 -0700</bug_when>
    <thetext>Comment on attachment 286363
Patch for committing

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

Some comments post-landing for future patches like this one.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:257
&gt; +    CGAffineTransform matrix = CGAffineTransformMakeScale(1, -1);

Might be nicer to use auto for a line like this.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:265
&gt; +    RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(fontName, fontSize, &amp;matrix));

In future code, I suggest auto instead of writing out the type for the result of adoptCF calls.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:268
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));

And this.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:272
&gt; +    RetainPtr&lt;CFStringRef&gt; string = adoptCF(CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UInt8*&gt;(cstr.data()), cstr.length(), kCFStringEncodingASCII, false, kCFAllocatorNull));
&gt; +    RetainPtr&lt;CFAttributedStringRef&gt; attributedString = adoptCF(CFAttributedStringCreate(kCFAllocatorDefault, string.get(), attributes.get()));
&gt; +    RetainPtr&lt;CTLineRef&gt; line = adoptCF(CTLineCreateWithAttributedString(attributedString.get()));

And these.

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:36
&gt; +#include &lt;CoreFoundation/CoreFoundation.h&gt;
&gt; +#include &lt;CoreText/CoreText.h&gt;
&gt; +
&gt;  #include &quot;GraphicsContextCG.h&quot;
&gt;  #include &quot;LayerPool.h&quot;
&gt;  #include &quot;PlatformCALayerClient.h&quot;
&gt;  #include &quot;TextStream.h&quot;
&gt;  #include &lt;wtf/StringExtras.h&gt;

WebKit coding style has these sorted in a single paragraph, not in two paragraphs like this.

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:132
&gt; +    CGAffineTransform matrix = CGAffineTransformMakeScale(scale.width, scale.height);
&gt; +    RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), fontSize, &amp;matrix));

auto

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:138
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +    RetainPtr&lt;CFStringRef&gt; string = adoptCF(CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UInt8*&gt;(text), length, kCFStringEncodingUTF8, false, kCFAllocatorNull));
&gt; +    RetainPtr&lt;CFAttributedStringRef&gt; attributedString = adoptCF(CFAttributedStringCreate(kCFAllocatorDefault, string.get(), attributes.get()));
&gt; +    RetainPtr&lt;CTLineRef&gt; line = adoptCF(CTLineCreateWithAttributedString(attributedString.get()));

auto

&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:35
&gt; +#include &lt;CoreText/CoreText.h&gt;
&gt; +
&gt;  #include &quot;FontAntialiasingStateSaver.h&quot;
&gt;  #include &quot;LegacyTileGrid.h&quot;
&gt;  #include &quot;LegacyTileGridTile.h&quot;

Sorted in a single paragraph.

&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:598
&gt; +        CGAffineTransform matrix = CGAffineTransformMakeScale(1, -1);
&gt; +        RetainPtr&lt;CTFontRef&gt; font = adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), 25, &amp;matrix));

auto

&gt; Source/WebCore/platform/ios/LegacyTileCache.mm:604
&gt; +        RetainPtr&lt;CFDictionaryRef&gt; attributes = adoptCF(CFDictionaryCreate(kCFAllocatorDefault, keys, values, WTF_ARRAY_LENGTH(keys), &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +        RetainPtr&lt;CFStringRef&gt; string = adoptCF(CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast&lt;const UInt8*&gt;(text), strlen(text), kCFStringEncodingUTF8, false, kCFAllocatorNull));
&gt; +        RetainPtr&lt;CFAttributedStringRef&gt; attributedString = adoptCF(CFAttributedStringCreate(kCFAllocatorDefault, string.get(), attributes.get()));
&gt; +        RetainPtr&lt;CTLineRef&gt; line = adoptCF(CTLineCreateWithAttributedString(attributedString.get()));

auto

&gt; Source/WebCore/platform/spi/win/CoreTextSPIWin.h:35
&gt; +typedef const struct __CTFont* CTFontRef;
&gt; +typedef const struct __CTLine* CTLineRef;

Are these really needed even if we include the headers above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221502</commentid>
    <comment_count>17</comment_count>
      <attachid>286363</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-19 15:10:12 -0700</bug_when>
    <thetext>Comment on attachment 286363
Patch for committing

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

&gt;&gt; Source/WebCore/platform/spi/win/CoreTextSPIWin.h:35
&gt;&gt; +typedef const struct __CTLine* CTLineRef;
&gt; 
&gt; Are these really needed even if we include the headers above?

Yes, because the Windows CoreText headers are incomplete. However, all (many) of the symbols do exist in the .dll, and I verified by hand that they actually do work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221506</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-19 15:14:41 -0700</bug_when>
    <thetext>Committed r204658: &lt;http://trac.webkit.org/changeset/204658&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286164</attachid>
            <date>2016-08-16 00:58:23 -0700</date>
            <delta_ts>2016-08-16 19:33:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160895-20160816005633.patch</filename>
            <type>text/plain</type>
            <size>8687</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIyYTgwNTY1ZDY0M2Q5
ZWNlOWZmZThmMDk5NDA1ZGNkN2QxZDg3Yy4uOWJiMzQ5YTkxN2FkMTQxZTJhM2U4Y2MxNzE3NTI0
MWQyZmNjOTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA4LTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlv
ciBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3
TGF5ZXIpOgorCiAyMDE2LTA4LTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIENvbnZlcnNpb24gdG8gc2VxdWVuY2U8VD4gaXMgYnJva2VuIGZvciBpdGVyYWJs
ZSBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggNWU4NDhmNmZiZWE1ZmRlNzQ5OGU3MzMyNDIzZTgz
MWI4YzYzNmYxZS4uOTI3N2FmMmVmYzhhNmI4ODI3NThhYmI1MTE5ZDQyYWI3YzI2YzBjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJs
YXlDb2NvYS5tbQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdF
KQogCisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VV
c2FnZVRocmVhZC5oIgpAQCAtMjUyLDIxICsyNTQsMjYgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3Is
IGMKICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwp
OwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjb2xvcik7CiAK
LSAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFr
ZVNjYWxlKDEsIC0xKSk7Ci0KLSAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIGRlcHJlY2F0ZWQgQVBJ
cy4KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLQorICAgIENHQWZmaW5lVHJh
bnNmb3JtIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiQ291cmllciIs
IDEwLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKKyAgICBDRlN0cmluZ1JlZiBmb250TmFtZSA9IENG
U1RSKCJDb3VyaWVyIik7CisgICAgQ0dGbG9hdCBmb250U2l6ZSA9IDEwOwogI2Vsc2UKLSAgICBD
R0NvbnRleHRTZWxlY3RGb250KGNvbnRleHQsICJNZW5sbyIsIDExLCBrQ0dFbmNvZGluZ01hY1Jv
bWFuKTsKKyAgICBDRlN0cmluZ1JlZiBmb250TmFtZSA9IENGU1RSKCJNZW5sbyIpOworICAgIENH
RmxvYXQgZm9udFNpemUgPSAxMTsKICNlbmRpZgotCisgICAgUmV0YWluUHRyPENURm9udFJlZj4g
Zm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoZm9udE5hbWUsIGZvbnRTaXplLCAm
bWF0cml4KSk7CisgICAgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUg
fTsKKyAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtl
eXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgQ1N0cmluZyBjc3RyID0gdGV4dC5hc2NpaSgpOwotICAgIENH
Q29udGV4dFNob3dUZXh0QXRQb2ludChjb250ZXh0LCB4LCB5LCBjc3RyLmRhdGEoKSwgY3N0ci5s
ZW5ndGgoKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjc3Ry
LmRhdGEoKSksIGNzdHIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGQXR0cmlidXRlZFN0cmluZ1JlZj4g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1
dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKKyAgICBDR1BvaW50IHRleHRQb3Np
dGlvbiA9IENHQ29udGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRT
ZXRUZXh0UG9zaXRpb24oY29udGV4dCwgeCwgeSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgp
LCBjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgdGV4dFBv
c2l0aW9uLngsIHRleHRQb3NpdGlvbi55KTsKIAogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAwMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgx
M2JmZTBjOWUzYWQxMTc3Li43ODMzY2U3YWEzMTU4ZDhlMzEwM2JlNTFkYjU0ZTA4MzMzYjRlNzNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5jcHAKQEAgLTI2LDYgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKIAorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiTGF5ZXJQb29sLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCkBAIC0xMjEsMTIgKzEyNCwxOCBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6ZmxpcENvbnRleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxv
YXQgaGVpZ2h0KQogLy8gVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBi
dWcgaW4gV2luZG93cyBDRyA8cmRhcjovL3Byb2JsZW0vMjI3MDM0NzA+CiB2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHgs
IENHRmxvYXQgeSwgQ0dTaXplIHNjYWxlLCBDR0Zsb2F0IGZvbnRTaXplLCBjb25zdCBjaGFyKiB0
ZXh0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFu
c2Zvcm1NYWtlU2NhbGUoc2NhbGUud2lkdGgsIHNjYWxlLmhlaWdodCkpOwotICAgIENHQ29udGV4
dFNlbGVjdEZvbnQoY29udGV4dCwgIkhlbHZldGljYSIsIGZvbnRTaXplLCBrQ0dFbmNvZGluZ01h
Y1JvbWFuKTsKLSAgICBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgeCwgeSwgdGV4
dCwgbGVuZ3RoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBDR0FmZmluZVRy
YW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2FsZS53aWR0aCwg
c2NhbGUuaGVpZ2h0KTsKKyAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihD
VEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRTaXplLCAmbWF0cml4
KSk7CisgICAgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAg
ICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGQXR0cmlidXRl
ZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRlcy5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0
ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKKyAgICBDR1Bv
aW50IHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAg
ICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgeCwgeSk7CisgICAgQ1RMaW5lRHJh
dyhsaW5lLmdldCgpLCBjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29u
dGV4dCwgdGV4dFBvc2l0aW9uLngsIHRleHRQb3NpdGlvbi55KTsKIH0KIAogUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JU
YWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIGNsaWVudCwgSW50U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZDhkMTA1NThiMmZkMzUxYjZk
NDFiNjI4ODNmYzA5MzY3OWFlMjg2OC4uZTFkZjJlNTcwNzc0ZmVkYTI3MzAyMWFlNTMyZTc3ZGUz
YzI3MWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbmNsdWRl
IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiRm9udEFudGlhbGlhc2luZ1N0YXRl
U2F2ZXIuaCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgogI2luY2x1ZGUgIkxlZ2FjeVRp
bGVHcmlkVGlsZS5oIgpAQCAtNTkxLDE0ICs1OTMsMTkgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6
OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkK
ICAgICAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAwLCAwLCAw
LjRmKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9y
KGNvbnRleHQsIDEsIDEsIDEsIDAuNmYpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgotICAgICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJh
bnNmb3JtTWFrZVNjYWxlKDEsIC0xKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCi0gICAgICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkhlbHZldGljYSIsIDI1
LCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKLSAgICAgICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50
KGNvbnRleHQsIGxhYmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkg
KyAyMCwgdGV4dCwgc3RybGVuKHRleHQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1h
a2VTY2FsZSgxLCAtMSk7CisgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9w
dENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgMjUsICZtYXRyaXgp
KTsKKyAgICAgICAgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsK
KyAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpIH07CisgICAgICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwgc3RybGVuKHRleHQp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJp
bmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENUTGluZVJl
Zj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmli
dXRlZFN0cmluZy5nZXQoKSkpOworICAgICAgICBDR1BvaW50IHRleHRQb3NpdGlvbiA9IENHQ29u
dGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBv
c2l0aW9uKGNvbnRleHQsIGxhYmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3Jp
Z2luLnkgKyAyMCk7CisgICAgICAgIENUTGluZURyYXcobGluZS5nZXQoKSwgY29udGV4dCk7Cisg
ICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24ueCwg
dGV4dFBvc2l0aW9uLnkpOwogICAgIAogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNv
bnRleHQpOyAgICAgICAgCiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286256</attachid>
            <date>2016-08-16 19:33:46 -0700</date>
            <delta_ts>2016-08-17 01:57:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-160895-20160816193159.patch</filename>
            <type>text/plain</type>
            <size>13017</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE2NjliZTA0N2EzNzk2
MzE5ZWRiNjAyOTg3YmM3OGU3YTFlNmEyYS4uMzI0MTQ5NTMxYzRlZGYyNzQ5ZjU5OTdjMjA4NTVj
YzkwN2FlYmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBsaW5raW5n
IHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdvcmsgb24gV2luZG93cy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaDogQWRkZWQuCisKIDIwMTYtMDgtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIFVS
THMgd2l0aG91dCBjcmVkZW50aWFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5YTcyYmVjODdiZGRhYTEyYTc1Njk0
Mzg2NDQ0Mzg2ZThhYWMyYjk0Li4xMDcwZTFhOTA0Y2U0Mjc4MDIxNWYyMzhkZGZlMmY0MDViMzc1
N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA4LTE2ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNaWdyYXRlIG9m
ZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0Rm9udCgpIGFu
ZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTGluayB0byB0aGUgZXhpc3RpbmcgQ29yZVRleHQgZnJhbWV3
b3JrLgorCisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisKIDIwMTYtMDgtMTUgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgT2xkV2Vi
QXNzZXJ0aW9ucy5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDE0ZWZjNDNiZDdhZmU5
MWQxZjFiZjA5ZDkwZDAxZjU3ZGMxN2RhOGIuLjc5ZmNjNmE2ZjcyY2MyZjgwZjBjMzBlNDZjMDBh
M2FlOTllNWFlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0zNCw2ICszNCw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3BpL3dpbiIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vd2luIgogICAgICIke1RISVJEUEFSVFlfRElSfS9BTkdMRS9pbmNs
dWRlIgogICAgICIke1RISVJEUEFSVFlfRElSfS9BTkdMRS9pbmNsdWRlL2VnbCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bQppbmRleCA1ZTg0OGY2ZmJlYTVmZGU3NDk4ZTczMzI0MjNlODMxYjhjNjM2ZjFlLi45Mjc3YWYy
ZWZjOGE2Yjg4Mjc1OGFiYjUxMTlkNDJhYjdjMjZjMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAKKyNpbmNsdWRlIDxDb3Jl
VGV4dC9Db3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVVzYWdlVGhyZWFkLmgiCkBAIC0y
NTIsMjEgKzI1NCwyNiBAQCBzdGF0aWMgdm9pZCBzaG93VGV4dChDR0NvbnRleHRSZWYgY29udGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgQ0dDb2xvclJlZiBjb2xvciwgYwogICAgIENHQ29udGV4dFNl
dFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbCk7CiAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAotICAgIENHQ29udGV4dFNldFRl
eHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpKTsKLQot
ICAgIC8vIEZJWE1FOiBEb24ndCB1c2UgZGVwcmVjYXRlZCBBUElzLgotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIgotCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBD
R0NvbnRleHRTZWxlY3RGb250KGNvbnRleHQsICJDb3VyaWVyIiwgMTAsIGtDR0VuY29kaW5nTWFj
Um9tYW4pOworICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gQ0ZTVFIoIkNvdXJpZXIiKTsKKyAg
ICBDR0Zsb2F0IGZvbnRTaXplID0gMTA7CiAjZWxzZQotICAgIENHQ29udGV4dFNlbGVjdEZvbnQo
Y29udGV4dCwgIk1lbmxvIiwgMTEsIGtDR0VuY29kaW5nTWFjUm9tYW4pOworICAgIENGU3RyaW5n
UmVmIGZvbnROYW1lID0gQ0ZTVFIoIk1lbmxvIik7CisgICAgQ0dGbG9hdCBmb250U2l6ZSA9IDEx
OwogI2VuZGlmCi0KKyAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihDVEZv
bnRDcmVhdGVXaXRoTmFtZShmb250TmFtZSwgZm9udFNpemUsICZtYXRyaXgpKTsKKyAgICBDRlR5
cGVSZWYga2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSB9OworICAgIENGVHlwZVJlZiB2
YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSB9OworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAg
ICBDU3RyaW5nIGNzdHIgPSB0ZXh0LmFzY2lpKCk7Ci0gICAgQ0dDb250ZXh0U2hvd1RleHRBdFBv
aW50KGNvbnRleHQsIHgsIHksIGNzdHIuZGF0YSgpLCBjc3RyLmxlbmd0aCgpKTsKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNzdHIuZGF0YSgpKSwgY3N0ci5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Ry
aW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENUTGluZVJlZj4g
bGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRl
ZFN0cmluZy5nZXQoKSkpOworICAgIENHUG9pbnQgdGV4dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0
VGV4dFBvc2l0aW9uKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250
ZXh0LCB4LCB5KTsKKyAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRleHQpOworICAgIENH
Q29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0
aW9uLnkpOwogCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwCmluZGV4IDAwYTI1NzNhZmYxMmVmODlkYjJhNTEwODEzYmZlMGM5ZTNhZDExNzcuLjIy
MDgzZWIzODA1NzdmYzA5MTU5MzNmZDE3MGU2YzZkZDRiM2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApA
QCAtMjYsMTIgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1DQUxheWVyLmgiCiAKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CisKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2luY2x1ZGUgIkxheWVyUG9vbC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CiAKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiQ29yZVRleHRTUElX
aW4uaCIKKyNlbmRpZgorCiAjaWYgVVNFKENBKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MjEsMTIgKzEyOCwxOCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZmxpcENvbnRleHQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgaGVpZ2h0KQogLy8gVGhpcyBmdW5jdGlvbiBpcyBuZWVk
ZWQgdG8gd29yayBhcm91bmQgYSBidWcgaW4gV2luZG93cyBDRyA8cmRhcjovL3Byb2JsZW0vMjI3
MDM0NzA+CiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR0Zsb2F0IHgsIENHRmxvYXQgeSwgQ0dTaXplIHNjYWxlLCBDR0Zsb2F0IGZv
bnRTaXplLCBjb25zdCBjaGFyKiB0ZXh0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgo
Y29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoc2NhbGUud2lkdGgsIHNjYWxlLmhl
aWdodCkpOwotICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkhlbHZldGljYSIsIGZv
bnRTaXplLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKLSAgICBDR0NvbnRleHRTaG93VGV4dEF0UG9p
bnQoY29udGV4dCwgeCwgeSwgdGV4dCwgbGVuZ3RoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1h
a2VTY2FsZShzY2FsZS53aWR0aCwgc2NhbGUuaGVpZ2h0KTsKKyAgICBSZXRhaW5QdHI8Q1RGb250
UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNh
IiksIGZvbnRTaXplLCAmbWF0cml4KSk7CisgICAgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9u
dEF0dHJpYnV0ZU5hbWUgfTsKKyAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkg
fTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhdHRyaWJ1dGVzID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwgbGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAg
UmV0YWluUHRyPENGQXR0cmlidXRlZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5n
ZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUg
PSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJp
bmcuZ2V0KCkpKTsKKyAgICBDR1BvaW50IHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQ
b3NpdGlvbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwg
eCwgeSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKKyAgICBDR0NvbnRl
eHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgdGV4dFBvc2l0aW9uLngsIHRleHRQb3NpdGlvbi55
KTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3Jl
YXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGNsaWVudCwgSW50U2l6ZSBzaXpl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5k
ZXggZDhkMTA1NThiMmZkMzUxYjZkNDFiNjI4ODNmYzA5MzY3OWFlMjg2OC4uZTFkZjJlNTcwNzc0
ZmVkYTI3MzAyMWFlNTMyZTc3ZGUzYzI3MWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBQTEFU
Rk9STShJT1MpCiAKKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorCiAjaW5jbHVkZSAi
Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZC5o
IgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpAQCAtNTkxLDE0ICs1OTMsMTkgQEAg
dm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBD
R0NvbnRleHRSZWYgY29udGV4dCkKICAgICAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xv
cihjb250ZXh0LCAxLCAwLCAwLCAwLjRmKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQ0dD
b250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEsIDEsIDEsIDAuNmYpOwotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4
KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKSk7Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29u
dGV4dCwgIkhlbHZldGljYSIsIDI1LCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKLSAgICAgICAgQ0dD
b250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIGxhYmVsQm91bmRzLm9yaWdpbi54ICsgMywg
bGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCwgdGV4dCwgc3RybGVuKHRleHQpKTsKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXgg
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CisgICAgICAgIFJldGFpblB0cjxD
VEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2
ZXRpY2EiKSwgMjUsICZtYXRyaXgpKTsKKyAgICAgICAgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NU
Rm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250
LmdldCgpIH07CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
Pih0ZXh0KSwgc3RybGVuKHRleHQpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZB
bGxvY2F0b3JOdWxsKSk7CisgICAgICAgIFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICAg
ICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgICAgICBDR1BvaW50
IHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIGxhYmVsQm91bmRzLm9yaWdpbi54
ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCk7CisgICAgICAgIENUTGluZURyYXcobGlu
ZS5nZXQoKSwgY29udGV4dCk7CisgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250
ZXh0LCB0ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0aW9uLnkpOwogICAgIAogICAgICAgICBDR0Nv
bnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAgICAgCiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9Db3JlVGV4dFNQSVdpbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9Db3JlVGV4dFNQSVdpbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhi
ZTk3OThjYjQ2MmQ1MjJlMDdlYWEzOTRjN2U3ODRmNGQxN2ViMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Q29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdy
YXBoaWNzLmg+CisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DVEZvbnQqIENURm9udFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RM
aW5lKiBDVExpbmVSZWY7CisKK0NURm9udFJlZiBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlN0cmlu
Z1JlZiBuYW1lLCBDR0Zsb2F0IHNpemUsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiBtYXRyaXgp
OworQ1RMaW5lUmVmIENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKENGQXR0cmlidXRl
ZFN0cmluZ1JlZik7Cit2b2lkIENUTGluZURyYXcoQ1RMaW5lUmVmLCBDR0NvbnRleHRSZWYpOwor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0NWZhODIwOWRhYTEyMjhmYTYyZGM2YjExYjI0
MzU5MDQ1MDNmN2RhLi4xOGNiOTkwYWUzYjgzMTJmNTMxMjdmZmVmM2RhODMzYzZmYmEzMTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTI1LDYgKzI1LDcgQEAgZWxzZSAoKQogICAgICAg
ICBQUklWQVRFIENGTmV0d29yayR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklWQVRFIENvcmVG
b3VuZGF0aW9uJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgQ29yZUdyYXBoaWNzJHtE
RUJVR19TVUZGSVh9CisgICAgICAgIFBSSVZBVEUgQ29yZVRleHQke0RFQlVHX1NVRkZJWH0KICAg
ICAgICAgUFJJVkFURSBTUUxpdGUzJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgbGliZGlz
cGF0Y2gke0RFQlVHX1NVRkZJWH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286291</attachid>
            <date>2016-08-17 01:57:25 -0700</date>
            <delta_ts>2016-08-17 03:16:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160895-20160817015537.patch</filename>
            <type>text/plain</type>
            <size>13084</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFiYjIxYzUxOGI0OTQ3
ZGFhYWRiOWU3Yjg5ZmNkZWRjZjBhOWI5Zi4uNjg1ZDBkZDE5MjUwNjRlZmU4Y2Q0ODM0Y2YxZDdk
ZDZjODU4MjhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBsaW5raW5n
IHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdvcmsgb24gV2luZG93cy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaDogQWRkZWQuCisKIDIwMTYtMDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHT2JqZWN0IERP
TSBiaW5kaW5ncyBBUEkgYnJlYWsgYWZ0ZXIgcjIwNDMxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkzN2Y4ZWQ5
MDEyN2QwYzkyNDk5YmM3NjQyMjE2ODVlN2QwMWFkNy4uYjE1YWQzMTc0MWIwYTc0YTkwNWNiM2Nm
NTdmMmZlMGVjMGYyODI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOC0xNyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gTWlncmF0ZSBvZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3JhcGhpY3MgQVBJIENHQ29udGV4dFNl
bGVjdEZvbnQoKSBhbmQgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbmsgdG8gdGhlIGV4aXN0aW5nIENv
cmVUZXh0IGZyYW1ld29yay4KKworICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorCiAyMDE2
LTA4LTE2ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBDTWFrZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5k
ZXggMTRlZmM0M2JkN2FmZTkxZDFmMWJmMDlkOTBkMDFmNTdkYzE3ZGE4Yi4uNzlmY2M2YTZmNzJj
YzJmODBmMGMzMGU0NmMwMGEzYWU5OWU1YWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UK
QEAgLTM0LDYgKzM0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93aW4iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL25ldHdvcmsvd2luIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9zcGkv
d2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCiAgICAgIiR7VEhJUkRQQVJU
WV9ESVJ9L0FOR0xFL2luY2x1ZGUiCiAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL2luY2x1
ZGUvZWdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDVlODQ4ZjZmYmVhNWZkZTc0OThlNzMzMjQyM2U4MzFi
OGM2MzZmMWUuLjkyNzdhZjJlZmM4YTZiODgyNzU4YWJiNTExOWQ0MmFiN2MyNmMwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0KQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
IAorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CisKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIlJlc291cmNlVXNh
Z2VUaHJlYWQuaCIKQEAgLTI1MiwyMSArMjU0LDI2IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBj
CiAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsKTsK
ICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY29sb3IpOwogCi0g
ICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2VT
Y2FsZSgxLCAtMSkpOwotCi0gICAgLy8gRklYTUU6IERvbid0IHVzZSBkZXByZWNhdGVkIEFQSXMu
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0KKyAgICBDR0FmZmluZVRyYW5z
Zm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkNvdXJpZXIiLCAx
MCwga0NHRW5jb2RpbmdNYWNSb21hbik7CisgICAgQ0ZTdHJpbmdSZWYgZm9udE5hbWUgPSBDRlNU
UigiQ291cmllciIpOworICAgIENHRmxvYXQgZm9udFNpemUgPSAxMDsKICNlbHNlCi0gICAgQ0dD
b250ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiTWVubG8iLCAxMSwga0NHRW5jb2RpbmdNYWNSb21h
bik7CisgICAgQ0ZTdHJpbmdSZWYgZm9udE5hbWUgPSBDRlNUUigiTWVubG8iKTsKKyAgICBDR0Zs
b2F0IGZvbnRTaXplID0gMTE7CiAjZW5kaWYKLQorICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZv
bnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKGZvbnROYW1lLCBmb250U2l6ZSwgJm1h
dHJpeCkpOworICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZvbnRBdHRyaWJ1dGVOYW1lIH07
CisgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpIH07CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogICAgIENTdHJpbmcgY3N0ciA9IHRleHQuYXNjaWkoKTsKLSAgICBDR0Nv
bnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgeCwgeSwgY3N0ci5kYXRhKCksIGNzdHIubGVu
Z3RoKCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY3N0ci5k
YXRhKCkpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NG
QWxsb2NhdG9yTnVsbCkpOworICAgIFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRl
ZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CisgICAgQ0dQb2ludCB0ZXh0UG9zaXRp
b24gPSBDR0NvbnRleHRHZXRUZXh0UG9zaXRpb24oY29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOworICAgIENUTGluZURyYXcobGluZS5nZXQoKSwg
Y29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHRleHRQb3Np
dGlvbi54LCB0ZXh0UG9zaXRpb24ueSk7CiAKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNv
bnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMDBhMjU3M2FmZjEyZWY4OWRiMmE1MTA4MTNi
ZmUwYzllM2FkMTE3Ny4uMjIwODNlYjM4MDU3N2ZjMDkxNTkzM2ZkMTcwZTZjNmRkNGIzYmEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCkBAIC0yNiwxMiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKIAorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiTGF5ZXJQb29sLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNs
dWRlICJDb3JlVGV4dFNQSVdpbi5oIgorI2VuZGlmCisKICNpZiBVU0UoQ0EpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTEyMSwxMiArMTI4LDE4IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpm
bGlwQ29udGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCiAvLyBUaGlz
IGZ1bmN0aW9uIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXaW5kb3dzIENHIDxy
ZGFyOi8vcHJvYmxlbS8yMjcwMzQ3MD4KIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3VGV4dEF0
UG9pbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR1NpemUg
c2NhbGUsIENHRmxvYXQgZm9udFNpemUsIGNvbnN0IGNoYXIqIHRleHQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgQ0dDb250
ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2Fs
ZS53aWR0aCwgc2NhbGUuaGVpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0U2VsZWN0Rm9udChjb250ZXh0
LCAiSGVsdmV0aWNhIiwgZm9udFNpemUsIGtDR0VuY29kaW5nTWFjUm9tYW4pOwotICAgIENHQ29u
dGV4dFNob3dUZXh0QXRQb2ludChjb250ZXh0LCB4LCB5LCB0ZXh0LCBsZW5ndGgpOwotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIENHQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCA9IENH
QWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlLndpZHRoLCBzY2FsZS5oZWlnaHQpOworICAg
IFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1l
KENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udFNpemUsICZtYXRyaXgpKTsKKyAgICBDRlR5cGVSZWYg
a2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSB9OworICAgIENGVHlwZVJlZiB2YWx1ZXNb
XSA9IHsgZm9udC5nZXQoKSB9OworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJp
YnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
ZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KHRleHQpLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UsIGtDRkFsbG9j
YXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENUTGluZVJlZj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJp
bmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgIENHUG9pbnQgdGV4dFBvc2l0aW9uID0g
Q0dDb250ZXh0R2V0VGV4dFBvc2l0aW9uKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjb250ZXh0LCB4LCB5KTsKKyAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRl
eHQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24u
eCwgdGV4dFBvc2l0aW9uLnkpOwogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogY2xp
ZW50LCBJbnRTaXplIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVDYWNoZS5tbQppbmRleCBkOGQxMDU1OGIyZmQzNTFiNmQ0MWI2Mjg4M2ZjMDkzNjc5YWUy
ODY4Li5lMWRmMmU1NzA3NzRmZWRhMjczMDIxYWU1MzJlNzdkZTNjMjcxZmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4
LDggQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0
Lmg+CisKICNpbmNsdWRlICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2luY2x1ZGUg
IkxlZ2FjeVRpbGVHcmlkLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCkBAIC01
OTEsMTQgKzU5MywxOSBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgICAgICAgICAgQ0dDb250
ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEsIDAsIDAsIDAuNGYpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMSwgMSwgMSwg
MC42Zik7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIENHQ29u
dGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwg
LTEpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgQ0dDb250
ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiSGVsdmV0aWNhIiwgMjUsIGtDR0VuY29kaW5nTWFjUm9t
YW4pOwotICAgICAgICBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWxCb3Vu
ZHMub3JpZ2luLnggKyAzLCBsYWJlbEJvdW5kcy5vcmlnaW4ueSArIDIwLCB0ZXh0LCBzdHJsZW4o
dGV4dCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisgICAgICAgIENHQWZmaW5l
VHJhbnNmb3JtIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKKyAg
ICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0
aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCAyNSwgJm1hdHJpeCkpOworICAgICAgICBDRlR5cGVS
ZWYga2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSB9OworICAgICAgICBDRlR5cGVSZWYg
dmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHRleHQpLCBzdHJsZW4odGV4dCksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXR0
cmlidXRlZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRl
cy5nZXQoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihD
VExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7
CisgICAgICAgIENHUG9pbnQgdGV4dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0VGV4dFBvc2l0aW9u
KGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgbGFi
ZWxCb3VuZHMub3JpZ2luLnggKyAzLCBsYWJlbEJvdW5kcy5vcmlnaW4ueSArIDIwKTsKKyAgICAg
ICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNvbnRleHQsIHRleHRQb3NpdGlvbi54LCB0ZXh0UG9zaXRpb24ueSk7CiAg
ICAgCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7ICAgICAgICAKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0
U1BJV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2lu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGNhODViNGI4MmY0ZmJjYWRhMTJiYjk3ZWY2YjkyZGY2MTE2NjUyNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5o
PgorCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NURm9udCogQ1RGb250UmVmOwordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DVExpbmUqIENUTGluZVJlZjsKKworZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVEZvbnRBdHRyaWJ1dGVOYW1lOworCitDVEZvbnRSZWYgQ1RGb250Q3JlYXRlV2l0aE5h
bWUoQ0ZTdHJpbmdSZWYgbmFtZSwgQ0dGbG9hdCBzaXplLCBjb25zdCBDR0FmZmluZVRyYW5zZm9y
bSogbWF0cml4KTsKK0NUTGluZVJlZiBDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhD
RkF0dHJpYnV0ZWRTdHJpbmdSZWYpOwordm9pZCBDVExpbmVEcmF3KENUTGluZVJlZiwgQ0dDb250
ZXh0UmVmKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNDVmYTgyMDlkYWExMjI4ZmE2
MmRjNmIxMWIyNDM1OTA0NTAzZjdkYS4uMThjYjk5MGFlM2I4MzEyZjUzMTI3ZmZlZjNkYTgzM2M2
ZmJhMzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNSw2ICsyNSw3IEBAIGVsc2Ug
KCkKICAgICAgICAgUFJJVkFURSBDRk5ldHdvcmske0RFQlVHX1NVRkZJWH0KICAgICAgICAgUFJJ
VkFURSBDb3JlRm91bmRhdGlvbiR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklWQVRFIENvcmVH
cmFwaGljcyR7REVCVUdfU1VGRklYfQorICAgICAgICBQUklWQVRFIENvcmVUZXh0JHtERUJVR19T
VUZGSVh9CiAgICAgICAgIFBSSVZBVEUgU1FMaXRlMyR7REVCVUdfU1VGRklYfQogICAgICAgICBQ
UklWQVRFIFdlYktpdFN5c3RlbUludGVyZmFjZSR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklW
QVRFIGxpYmRpc3BhdGNoJHtERUJVR19TVUZGSVh9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286294</attachid>
            <date>2016-08-17 03:16:45 -0700</date>
            <delta_ts>2016-08-17 09:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160895-20160817031455.patch</filename>
            <type>text/plain</type>
            <size>13105</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFiYjIxYzUxOGI0OTQ3
ZGFhYWRiOWU3Yjg5ZmNkZWRjZjBhOWI5Zi4uNjg1ZDBkZDE5MjUwNjRlZmU4Y2Q0ODM0Y2YxZDdk
ZDZjODU4MjhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBsaW5raW5n
IHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdvcmsgb24gV2luZG93cy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaDogQWRkZWQuCisKIDIwMTYtMDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHT2JqZWN0IERP
TSBiaW5kaW5ncyBBUEkgYnJlYWsgYWZ0ZXIgcjIwNDMxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkzN2Y4ZWQ5
MDEyN2QwYzkyNDk5YmM3NjQyMjE2ODVlN2QwMWFkNy4uYjE1YWQzMTc0MWIwYTc0YTkwNWNiM2Nm
NTdmMmZlMGVjMGYyODI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOC0xNyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gTWlncmF0ZSBvZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3JhcGhpY3MgQVBJIENHQ29udGV4dFNl
bGVjdEZvbnQoKSBhbmQgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbmsgdG8gdGhlIGV4aXN0aW5nIENv
cmVUZXh0IGZyYW1ld29yay4KKworICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorCiAyMDE2
LTA4LTE2ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBDTWFrZSBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5k
ZXggMTRlZmM0M2JkN2FmZTkxZDFmMWJmMDlkOTBkMDFmNTdkYzE3ZGE4Yi4uNzlmY2M2YTZmNzJj
YzJmODBmMGMzMGU0NmMwMGEzYWU5OWU1YWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UK
QEAgLTM0LDYgKzM0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93aW4iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL25ldHdvcmsvd2luIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9zcGkv
d2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCiAgICAgIiR7VEhJUkRQQVJU
WV9ESVJ9L0FOR0xFL2luY2x1ZGUiCiAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL2luY2x1
ZGUvZWdsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDVlODQ4ZjZmYmVhNWZkZTc0OThlNzMzMjQyM2U4MzFi
OGM2MzZmMWUuLjkyNzdhZjJlZmM4YTZiODgyNzU4YWJiNTExOWQ0MmFiN2MyNmMwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0KQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
IAorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CisKICNpbmNsdWRlICJKU0RPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIlJlc291cmNlVXNh
Z2VUaHJlYWQuaCIKQEAgLTI1MiwyMSArMjU0LDI2IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENH
Q29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBj
CiAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsKTsK
ICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY29sb3IpOwogCi0g
ICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2VT
Y2FsZSgxLCAtMSkpOwotCi0gICAgLy8gRklYTUU6IERvbid0IHVzZSBkZXByZWNhdGVkIEFQSXMu
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0KKyAgICBDR0FmZmluZVRyYW5z
Zm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkNvdXJpZXIiLCAx
MCwga0NHRW5jb2RpbmdNYWNSb21hbik7CisgICAgQ0ZTdHJpbmdSZWYgZm9udE5hbWUgPSBDRlNU
UigiQ291cmllciIpOworICAgIENHRmxvYXQgZm9udFNpemUgPSAxMDsKICNlbHNlCi0gICAgQ0dD
b250ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiTWVubG8iLCAxMSwga0NHRW5jb2RpbmdNYWNSb21h
bik7CisgICAgQ0ZTdHJpbmdSZWYgZm9udE5hbWUgPSBDRlNUUigiTWVubG8iKTsKKyAgICBDR0Zs
b2F0IGZvbnRTaXplID0gMTE7CiAjZW5kaWYKLQorICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZv
bnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKGZvbnROYW1lLCBmb250U2l6ZSwgJm1h
dHJpeCkpOworICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZvbnRBdHRyaWJ1dGVOYW1lIH07
CisgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpIH07CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogICAgIENTdHJpbmcgY3N0ciA9IHRleHQuYXNjaWkoKTsKLSAgICBDR0Nv
bnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgeCwgeSwgY3N0ci5kYXRhKCksIGNzdHIubGVu
Z3RoKCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY3N0ci5k
YXRhKCkpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NG
QWxsb2NhdG9yTnVsbCkpOworICAgIFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRl
ZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CisgICAgQ0dQb2ludCB0ZXh0UG9zaXRp
b24gPSBDR0NvbnRleHRHZXRUZXh0UG9zaXRpb24oY29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOworICAgIENUTGluZURyYXcobGluZS5nZXQoKSwg
Y29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHRleHRQb3Np
dGlvbi54LCB0ZXh0UG9zaXRpb24ueSk7CiAKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNv
bnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMDBhMjU3M2FmZjEyZWY4OWRiMmE1MTA4MTNi
ZmUwYzllM2FkMTE3Ny4uMjIwODNlYjM4MDU3N2ZjMDkxNTkzM2ZkMTcwZTZjNmRkNGIzYmEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCkBAIC0yNiwxMiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKIAorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiTGF5ZXJQb29sLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNs
dWRlICJDb3JlVGV4dFNQSVdpbi5oIgorI2VuZGlmCisKICNpZiBVU0UoQ0EpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTEyMSwxMiArMTI4LDE4IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpm
bGlwQ29udGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCiAvLyBUaGlz
IGZ1bmN0aW9uIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXaW5kb3dzIENHIDxy
ZGFyOi8vcHJvYmxlbS8yMjcwMzQ3MD4KIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3VGV4dEF0
UG9pbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBDR1NpemUg
c2NhbGUsIENHRmxvYXQgZm9udFNpemUsIGNvbnN0IGNoYXIqIHRleHQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgQ0dDb250
ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2Fs
ZS53aWR0aCwgc2NhbGUuaGVpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0U2VsZWN0Rm9udChjb250ZXh0
LCAiSGVsdmV0aWNhIiwgZm9udFNpemUsIGtDR0VuY29kaW5nTWFjUm9tYW4pOwotICAgIENHQ29u
dGV4dFNob3dUZXh0QXRQb2ludChjb250ZXh0LCB4LCB5LCB0ZXh0LCBsZW5ndGgpOwotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIENHQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCA9IENH
QWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlLndpZHRoLCBzY2FsZS5oZWlnaHQpOworICAg
IFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1l
KENGU1RSKCJIZWx2ZXRpY2EiKSwgZm9udFNpemUsICZtYXRyaXgpKTsKKyAgICBDRlR5cGVSZWYg
a2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSB9OworICAgIENGVHlwZVJlZiB2YWx1ZXNb
XSA9IHsgZm9udC5nZXQoKSB9OworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJp
YnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
ZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KHRleHQpLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UsIGtDRkFsbG9j
YXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENUTGluZVJlZj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJp
bmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgIENHUG9pbnQgdGV4dFBvc2l0aW9uID0g
Q0dDb250ZXh0R2V0VGV4dFBvc2l0aW9uKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjb250ZXh0LCB4LCB5KTsKKyAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRl
eHQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24u
eCwgdGV4dFBvc2l0aW9uLnkpOwogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogY2xp
ZW50LCBJbnRTaXplIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVDYWNoZS5tbQppbmRleCBkOGQxMDU1OGIyZmQzNTFiNmQ0MWI2Mjg4M2ZjMDkzNjc5YWUy
ODY4Li5lMWRmMmU1NzA3NzRmZWRhMjczMDIxYWU1MzJlNzdkZTNjMjcxZmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4
LDggQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0
Lmg+CisKICNpbmNsdWRlICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2luY2x1ZGUg
IkxlZ2FjeVRpbGVHcmlkLmgiCiAjaW5jbHVkZSAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCkBAIC01
OTEsMTQgKzU5MywxOSBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRp
bGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgICAgICAgICAgQ0dDb250
ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEsIDAsIDAsIDAuNGYpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMSwgMSwgMSwg
MC42Zik7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIENHQ29u
dGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwg
LTEpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgQ0dDb250
ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiSGVsdmV0aWNhIiwgMjUsIGtDR0VuY29kaW5nTWFjUm9t
YW4pOwotICAgICAgICBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWxCb3Vu
ZHMub3JpZ2luLnggKyAzLCBsYWJlbEJvdW5kcy5vcmlnaW4ueSArIDIwLCB0ZXh0LCBzdHJsZW4o
dGV4dCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisgICAgICAgIENHQWZmaW5l
VHJhbnNmb3JtIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKKyAg
ICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0
aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCAyNSwgJm1hdHJpeCkpOworICAgICAgICBDRlR5cGVS
ZWYga2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSB9OworICAgICAgICBDRlR5cGVSZWYg
dmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KHRleHQpLCBzdHJsZW4odGV4dCksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXR0
cmlidXRlZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRl
cy5nZXQoKSkpOworICAgICAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihD
VExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7
CisgICAgICAgIENHUG9pbnQgdGV4dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0VGV4dFBvc2l0aW9u
KGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgbGFi
ZWxCb3VuZHMub3JpZ2luLnggKyAzLCBsYWJlbEJvdW5kcy5vcmlnaW4ueSArIDIwKTsKKyAgICAg
ICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNvbnRleHQsIHRleHRQb3NpdGlvbi54LCB0ZXh0UG9zaXRpb24ueSk7CiAg
ICAgCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7ICAgICAgICAKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0
U1BJV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2lu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWUzMjQyNzdiZjc0YmUyOGM4ZDZiYzU5MDdmOWM3NGNkZTk0YmU4Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5o
PgorCitleHRlcm4gIkMiIHsKKwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DVEZvbnQqIENURm9u
dFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ1RMaW5lKiBDVExpbmVSZWY7CisKK2V4dGVy
biBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250QXR0cmlidXRlTmFtZTsKKworQ1RGb250UmVmIENU
Rm9udENyZWF0ZVdpdGhOYW1lKENGU3RyaW5nUmVmIG5hbWUsIENHRmxvYXQgc2l6ZSwgY29uc3Qg
Q0dBZmZpbmVUcmFuc2Zvcm0qIG1hdHJpeCk7CitDVExpbmVSZWYgQ1RMaW5lQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKTsKK3ZvaWQgQ1RMaW5lRHJhdyhD
VExpbmVSZWYsIENHQ29udGV4dFJlZik7CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5k
ZXggNDVmYTgyMDlkYWExMjI4ZmE2MmRjNmIxMWIyNDM1OTA0NTAzZjdkYS4uMThjYjk5MGFlM2I4
MzEyZjUzMTI3ZmZlZjNkYTgzM2M2ZmJhMzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0yNSw2ICsyNSw3IEBAIGVsc2UgKCkKICAgICAgICAgUFJJVkFURSBDRk5ldHdvcmske0RFQlVH
X1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBDb3JlRm91bmRhdGlvbiR7REVCVUdfU1VGRklYfQog
ICAgICAgICBQUklWQVRFIENvcmVHcmFwaGljcyR7REVCVUdfU1VGRklYfQorICAgICAgICBQUklW
QVRFIENvcmVUZXh0JHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgU1FMaXRlMyR7REVC
VUdfU1VGRklYfQogICAgICAgICBQUklWQVRFIFdlYktpdFN5c3RlbUludGVyZmFjZSR7REVCVUdf
U1VGRklYfQogICAgICAgICBQUklWQVRFIGxpYmRpc3BhdGNoJHtERUJVR19TVUZGSVh9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286302</attachid>
            <date>2016-08-17 09:23:10 -0700</date>
            <delta_ts>2016-08-17 13:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160895-20160817092122.patch</filename>
            <type>text/plain</type>
            <size>15227</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFhOGI4MzUwZDYwMTIz
NzA1MTNlMWUxMDA5YTI0NDA2NjFmZDJhZS4uNjhlZmFhOTlhNDc4YzljZmY3ODg3ZjZiYmFiNTJm
ZDU4YmFhYjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA4LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBsaW5raW5n
IHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdvcmsgb24gV2luZG93cy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0
U1BJV2luLmg6IEFkZGVkLgorCiAyMDE2LTA4LTE3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBZGQgdGVzdHMgZm9yIGxpbmtlZCBmb250cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjkzN2Y4ZWQ5MDEyN2QwYzkyNDk5YmM3NjQyMjE2ODVlN2QwMWFkNy4uYjE1
YWQzMTc0MWIwYTc0YTkwNWNiM2NmNTdmMmZlMGVjMGYyODI5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wOC0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gTWlncmF0ZSBvZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3Jh
cGhpY3MgQVBJIENHQ29udGV4dFNlbGVjdEZvbnQoKSBhbmQgQ0dDb250ZXh0U2hvd1RleHRBdFBv
aW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExp
bmsgdG8gdGhlIGV4aXN0aW5nIENvcmVUZXh0IGZyYW1ld29yay4KKworICAgICAgICAqIFBsYXRm
b3JtV2luLmNtYWtlOgorCiAyMDE2LTA4LTE2ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0Bz
YW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBDTWFrZSBidWlsZCBmaXgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMTRlZmM0M2JkN2FmZTkxZDFmMWJmMDlkOTBkMDFmNTdk
YzE3ZGE4Yi4uYjQzODdmN2FlNDgzNDkwZWYzNDM0ODc5MzM1NTFlMTVmOGIyOGUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTM0LDYgKzM0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93aW4i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvd2luIgorICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9zcGkvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93
aW4iCiAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL2luY2x1ZGUiCiAgICAgIiR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL2luY2x1ZGUvZWdsIgpAQCAtMTA0LDYgKzEwNSw4IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVu
ZGxlV2luLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0ZU5vdGlmaWVy
V2luLmNwcAogCisgICAgcGxhdGZvcm0vc3BpL3dpbi9Db3JlVGV4dFNQSVdpbi5jcHAKKwogICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlw
aGVuYXRpb25DRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCA1ZTg0OGY2ZmJlYTVmZGU3NDk4ZTczMzI0
MjNlODMxYjhjNjM2ZjFlLi45Mjc3YWYyZWZjOGE2Yjg4Mjc1OGFiYjUxMTlkNDJhYjdjMjZjMGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdl
T3ZlcmxheUNvY29hLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VVNBR0UpCiAKKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVVzYWdlVGhyZWFkLmgiCkBAIC0yNTIsMjEgKzI1NCwyNiBAQCBzdGF0aWMgdm9pZCBzaG93
VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgQ0dDb2xvclJlZiBj
b2xvciwgYwogICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0
RmlsbCk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9y
KTsKIAotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zv
cm1NYWtlU2NhbGUoMSwgLTEpKTsKLQotICAgIC8vIEZJWE1FOiBEb24ndCB1c2UgZGVwcmVjYXRl
ZCBBUElzLgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotCisgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBDR0NvbnRleHRTZWxlY3RGb250KGNvbnRleHQsICJDb3Vy
aWVyIiwgMTAsIGtDR0VuY29kaW5nTWFjUm9tYW4pOworICAgIENGU3RyaW5nUmVmIGZvbnROYW1l
ID0gQ0ZTVFIoIkNvdXJpZXIiKTsKKyAgICBDR0Zsb2F0IGZvbnRTaXplID0gMTA7CiAjZWxzZQot
ICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIk1lbmxvIiwgMTEsIGtDR0VuY29kaW5n
TWFjUm9tYW4pOworICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gQ0ZTVFIoIk1lbmxvIik7Cisg
ICAgQ0dGbG9hdCBmb250U2l6ZSA9IDExOwogI2VuZGlmCi0KKyAgICBSZXRhaW5QdHI8Q1RGb250
UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShmb250TmFtZSwgZm9udFNp
emUsICZtYXRyaXgpKTsKKyAgICBDRlR5cGVSZWYga2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRl
TmFtZSB9OworICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSB9OworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBDU3RyaW5nIGNzdHIgPSB0ZXh0LmFzY2lpKCk7Ci0g
ICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIHgsIHksIGNzdHIuZGF0YSgpLCBj
c3RyLmxlbmd0aCgpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNzdHIuZGF0YSgpKSwgY3N0ci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFs
c2UsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5n
UmVmPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgIENHUG9pbnQgdGV4
dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0VGV4dFBvc2l0aW9uKGNvbnRleHQpOworICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB4LCB5KTsKKyAgICBDVExpbmVEcmF3KGxpbmUu
Z2V0KCksIGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0
ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0aW9uLnkpOwogCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IDAwYTI1NzNhZmYxMmVmODlkYjJh
NTEwODEzYmZlMGM5ZTNhZDExNzcuLjIyMDgzZWIzODA1NzdmYzA5MTU5MzNmZDE3MGU2YzZkZDRi
M2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMjYsMTIgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAKKyNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CisKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkxheWVyUG9vbC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKKyNpZiBQTEFURk9STShXSU4p
CisjaW5jbHVkZSAiQ29yZVRleHRTUElXaW4uaCIKKyNlbmRpZgorCiAjaWYgVVNFKENBKQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjEsMTIgKzEyOCwxOCBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6ZmxpcENvbnRleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgaGVpZ2h0KQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBidWcgaW4gV2luZG93
cyBDRyA8cmRhcjovL3Byb2JsZW0vMjI3MDM0NzA+CiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d1RleHRBdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHgsIENHRmxvYXQgeSwg
Q0dTaXplIHNjYWxlLCBDR0Zsb2F0IGZvbnRTaXplLCBjb25zdCBjaGFyKiB0ZXh0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAg
IENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoc2NhbGUud2lkdGgsIHNjYWxlLmhlaWdodCkpOwotICAgIENHQ29udGV4dFNlbGVjdEZvbnQo
Y29udGV4dCwgIkhlbHZldGljYSIsIGZvbnRTaXplLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKLSAg
ICBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgeCwgeSwgdGV4dCwgbGVuZ3RoKTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2FsZS53aWR0aCwgc2NhbGUuaGVpZ2h0
KTsKKyAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVX
aXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRTaXplLCAmbWF0cml4KSk7CisgICAgQ0ZU
eXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAgICBDRlR5cGVSZWYg
dmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPih0ZXh0KSwgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGQXR0cmlidXRlZFN0cmluZ1JlZj4g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1
dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKKyAgICBDR1BvaW50IHRleHRQb3Np
dGlvbiA9IENHQ29udGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRT
ZXRUZXh0UG9zaXRpb24oY29udGV4dCwgeCwgeSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgp
LCBjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgdGV4dFBv
c2l0aW9uLngsIHRleHRQb3NpdGlvbi55KTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIGNsaWVudCwgSW50U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZDhkMTA1NThiMmZkMzUxYjZkNDFiNjI4ODNmYzA5
MzY3OWFlMjg2OC4uZTFkZjJlNTcwNzc0ZmVkYTI3MzAyMWFlNTMyZTc3ZGUzYzI3MWZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbmNsdWRlIDxDb3JlVGV4dC9D
b3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNp
bmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkVGlsZS5o
IgpAQCAtNTkxLDE0ICs1OTMsMTkgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdMYXllcihM
ZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICAgICAgICAg
IENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAwLCAwLCAwLjRmKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEs
IDEsIDEsIDAuNmYpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNj
YWxlKDEsIC0xKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAg
IENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkhlbHZldGljYSIsIDI1LCBrQ0dFbmNvZGlu
Z01hY1JvbWFuKTsKLSAgICAgICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIGxh
YmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCwgdGV4dCwg
c3RybGVuKHRleHQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgICAgICBD
R0FmZmluZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAt
MSk7CisgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENy
ZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgMjUsICZtYXRyaXgpKTsKKyAgICAgICAg
Q0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAgICAgICAgQ0ZU
eXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpIH07CisgICAgICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwgc3RybGVuKHRleHQpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIFJldGFpblB0
cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0
cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0
dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZSA9IGFk
b3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5n
ZXQoKSkpOworICAgICAgICBDR1BvaW50IHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQ
b3NpdGlvbihjb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRl
eHQsIGxhYmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCk7
CisgICAgICAgIENUTGluZURyYXcobGluZS5nZXQoKSwgY29udGV4dCk7CisgICAgICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0aW9u
LnkpOwogICAgIAogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAg
ICAgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9D
b3JlVGV4dFNQSVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVU
ZXh0U1BJV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGFkOWQ3N2I5NWVmMjU3ZjUzY2E2MzJhMzUzMjY3
Yjg5N2ZkZWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L3dpbi9Db3JlVGV4dFNQSVdpbi5jcHAKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb3JlVGV4dFNQSVdpbi5oIgorCitleHRlcm4g
IkMiIHsKKworY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEF0dHJpYnV0ZU5hbWUgPSBDRlNUUigi
TlNGb250Iik7CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L3dpbi9Db3JlVGV4dFNQSVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9D
b3JlVGV4dFNQSVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMzI0Mjc3YmY3NGJlMjhjOGQ2YmM1OTA3Zjlj
NzRjZGU5NGJlOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvd2luL0NvcmVUZXh0U1BJV2luLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
KyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8Q29yZVRl
eHQvQ29yZVRleHQuaD4KKworZXh0ZXJuICJDIiB7CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q1RGb250KiBDVEZvbnRSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NUTGluZSogQ1RMaW5l
UmVmOworCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEF0dHJpYnV0ZU5hbWU7CisK
K0NURm9udFJlZiBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlN0cmluZ1JlZiBuYW1lLCBDR0Zsb2F0
IHNpemUsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiBtYXRyaXgpOworQ1RMaW5lUmVmIENUTGlu
ZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKENGQXR0cmlidXRlZFN0cmluZ1JlZik7Cit2b2lk
IENUTGluZURyYXcoQ1RMaW5lUmVmLCBDR0NvbnRleHRSZWYpOworCit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V2luLmNtYWtlCmluZGV4IDQ1ZmE4MjA5ZGFhMTIyOGZhNjJkYzZiMTFiMjQzNTkwNDUwM2Y3ZGEu
LjE4Y2I5OTBhZTNiODMxMmY1MzEyN2ZmZWYzZGE4MzNjNmZiYTMxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdpbi5jbWFrZQpAQCAtMjUsNiArMjUsNyBAQCBlbHNlICgpCiAgICAgICAgIFBSSVZBVEUgQ0ZO
ZXR3b3JrJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgQ29yZUZvdW5kYXRpb24ke0RF
QlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBDb3JlR3JhcGhpY3Mke0RFQlVHX1NVRkZJWH0K
KyAgICAgICAgUFJJVkFURSBDb3JlVGV4dCR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklWQVRF
IFNRTGl0ZTMke0RFQlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2Uke0RFQlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBsaWJkaXNwYXRjaCR7REVCVUdf
U1VGRklYfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286321</attachid>
            <date>2016-08-17 13:30:12 -0700</date>
            <delta_ts>2016-08-17 14:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160895-20160817132824.patch</filename>
            <type>text/plain</type>
            <size>17131</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFhOGI4MzUwZDYwMTIz
NzA1MTNlMWUxMDA5YTI0NDA2NjFmZDJhZS4uNjhlZmFhOTlhNDc4YzljZmY3ODg3ZjZiYmFiNTJm
ZDU4YmFhYjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA4LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZSB0byBDVExpbmVEcmF3KCkgaW5z
dGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBsaW5raW5n
IHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdvcmsgb24gV2luZG93cy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBvaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0
U1BJV2luLmg6IEFkZGVkLgorCiAyMDE2LTA4LTE3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBZGQgdGVzdHMgZm9yIGxpbmtlZCBmb250cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjkzN2Y4ZWQ5MDEyN2QwYzkyNDk5YmM3NjQyMjE2ODVlN2QwMWFkNy4uYjE1
YWQzMTc0MWIwYTc0YTkwNWNiM2NmNTdmMmZlMGVjMGYyODI5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wOC0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gTWlncmF0ZSBvZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3Jh
cGhpY3MgQVBJIENHQ29udGV4dFNlbGVjdEZvbnQoKSBhbmQgQ0dDb250ZXh0U2hvd1RleHRBdFBv
aW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExp
bmsgdG8gdGhlIGV4aXN0aW5nIENvcmVUZXh0IGZyYW1ld29yay4KKworICAgICAgICAqIFBsYXRm
b3JtV2luLmNtYWtlOgorCiAyMDE2LTA4LTE2ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0Bz
YW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBDTWFrZSBidWlsZCBmaXgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMTRlZmM0M2JkN2FmZTkxZDFmMWJmMDlkOTBkMDFmNTdk
YzE3ZGE4Yi4uYjQzODdmN2FlNDgzNDkwZWYzNDM0ODc5MzM1NTFlMTVmOGIyOGUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTM0LDYgKzM0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93aW4i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvd2luIgorICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9zcGkvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93
aW4iCiAgICAgIiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL2luY2x1ZGUiCiAgICAgIiR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL2luY2x1ZGUvZWdsIgpAQCAtMTA0LDYgKzEwNSw4IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVu
ZGxlV2luLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0ZU5vdGlmaWVy
V2luLmNwcAogCisgICAgcGxhdGZvcm0vc3BpL3dpbi9Db3JlVGV4dFNQSVdpbi5jcHAKKwogICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlw
aGVuYXRpb25DRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCA1ZTg0OGY2ZmJlYTVmZGU3NDk4ZTczMzI0
MjNlODMxYjhjNjM2ZjFlLi45Mjc3YWYyZWZjOGE2Yjg4Mjc1OGFiYjUxMTlkNDJhYjdjMjZjMGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdl
T3ZlcmxheUNvY29hLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VVNBR0UpCiAKKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVVzYWdlVGhyZWFkLmgiCkBAIC0yNTIsMjEgKzI1NCwyNiBAQCBzdGF0aWMgdm9pZCBzaG93
VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgQ0dDb2xvclJlZiBj
b2xvciwgYwogICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0
RmlsbCk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9y
KTsKIAotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zv
cm1NYWtlU2NhbGUoMSwgLTEpKTsKLQotICAgIC8vIEZJWE1FOiBEb24ndCB1c2UgZGVwcmVjYXRl
ZCBBUElzLgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotCisgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBDR0NvbnRleHRTZWxlY3RGb250KGNvbnRleHQsICJDb3Vy
aWVyIiwgMTAsIGtDR0VuY29kaW5nTWFjUm9tYW4pOworICAgIENGU3RyaW5nUmVmIGZvbnROYW1l
ID0gQ0ZTVFIoIkNvdXJpZXIiKTsKKyAgICBDR0Zsb2F0IGZvbnRTaXplID0gMTA7CiAjZWxzZQot
ICAgIENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIk1lbmxvIiwgMTEsIGtDR0VuY29kaW5n
TWFjUm9tYW4pOworICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gQ0ZTVFIoIk1lbmxvIik7Cisg
ICAgQ0dGbG9hdCBmb250U2l6ZSA9IDExOwogI2VuZGlmCi0KKyAgICBSZXRhaW5QdHI8Q1RGb250
UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShmb250TmFtZSwgZm9udFNp
emUsICZtYXRyaXgpKTsKKyAgICBDRlR5cGVSZWYga2V5c1tdID0geyBrQ1RGb250QXR0cmlidXRl
TmFtZSB9OworICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSB9OworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5H
VEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBDU3RyaW5nIGNzdHIgPSB0ZXh0LmFzY2lpKCk7Ci0g
ICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIHgsIHksIGNzdHIuZGF0YSgpLCBj
c3RyLmxlbmd0aCgpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGNzdHIuZGF0YSgpKSwgY3N0ci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFs
c2UsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5n
UmVmPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgIENHUG9pbnQgdGV4
dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0VGV4dFBvc2l0aW9uKGNvbnRleHQpOworICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB4LCB5KTsKKyAgICBDVExpbmVEcmF3KGxpbmUu
Z2V0KCksIGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0
ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0aW9uLnkpOwogCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IDAwYTI1NzNhZmYxMmVmODlkYjJh
NTEwODEzYmZlMGM5ZTNhZDExNzcuLjIyMDgzZWIzODA1NzdmYzA5MTU5MzNmZDE3MGU2YzZkZDRi
M2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMjYsMTIgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAKKyNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CisKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkxheWVyUG9vbC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKKyNpZiBQTEFURk9STShXSU4p
CisjaW5jbHVkZSAiQ29yZVRleHRTUElXaW4uaCIKKyNlbmRpZgorCiAjaWYgVVNFKENBKQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjEsMTIgKzEyOCwxOCBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6ZmxpcENvbnRleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgaGVpZ2h0KQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBidWcgaW4gV2luZG93
cyBDRyA8cmRhcjovL3Byb2JsZW0vMjI3MDM0NzA+CiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d1RleHRBdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHgsIENHRmxvYXQgeSwg
Q0dTaXplIHNjYWxlLCBDR0Zsb2F0IGZvbnRTaXplLCBjb25zdCBjaGFyKiB0ZXh0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAg
IENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2Nh
bGUoc2NhbGUud2lkdGgsIHNjYWxlLmhlaWdodCkpOwotICAgIENHQ29udGV4dFNlbGVjdEZvbnQo
Y29udGV4dCwgIkhlbHZldGljYSIsIGZvbnRTaXplLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKLSAg
ICBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoY29udGV4dCwgeCwgeSwgdGV4dCwgbGVuZ3RoKTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2FsZS53aWR0aCwgc2NhbGUuaGVpZ2h0
KTsKKyAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVX
aXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRTaXplLCAmbWF0cml4KSk7CisgICAgQ0ZU
eXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAgICBDRlR5cGVSZWYg
dmFsdWVzW10gPSB7IGZvbnQuZ2V0KCkgfTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPih0ZXh0KSwgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGQXR0cmlidXRlZFN0cmluZ1JlZj4g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1
dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKKyAgICBDR1BvaW50IHRleHRQb3Np
dGlvbiA9IENHQ29udGV4dEdldFRleHRQb3NpdGlvbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRT
ZXRUZXh0UG9zaXRpb24oY29udGV4dCwgeCwgeSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgp
LCBjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgdGV4dFBv
c2l0aW9uLngsIHRleHRQb3NpdGlvbi55KTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIGNsaWVudCwgSW50U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZDhkMTA1NThiMmZkMzUxYjZkNDFiNjI4ODNmYzA5
MzY3OWFlMjg2OC4uZTFkZjJlNTcwNzc0ZmVkYTI3MzAyMWFlNTMyZTc3ZGUzYzI3MWZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbmNsdWRlIDxDb3JlVGV4dC9D
b3JlVGV4dC5oPgorCiAjaW5jbHVkZSAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNp
bmNsdWRlICJMZWdhY3lUaWxlR3JpZC5oIgogI2luY2x1ZGUgIkxlZ2FjeVRpbGVHcmlkVGlsZS5o
IgpAQCAtNTkxLDE0ICs1OTMsMTkgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRyYXdMYXllcihM
ZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICAgICAgICAg
IENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAwLCAwLCAwLjRmKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEs
IDEsIDEsIDAuNmYpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNj
YWxlKDEsIC0xKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAg
IENHQ29udGV4dFNlbGVjdEZvbnQoY29udGV4dCwgIkhlbHZldGljYSIsIDI1LCBrQ0dFbmNvZGlu
Z01hY1JvbWFuKTsKLSAgICAgICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIGxh
YmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCwgdGV4dCwg
c3RybGVuKHRleHQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgICAgICBD
R0FmZmluZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAt
MSk7CisgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENy
ZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgMjUsICZtYXRyaXgpKTsKKyAgICAgICAg
Q0ZUeXBlUmVmIGtleXNbXSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUgfTsKKyAgICAgICAgQ0ZU
eXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpIH07CisgICAgICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwgc3RybGVuKHRleHQpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIFJldGFpblB0
cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0
cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0
dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZSA9IGFk
b3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5n
ZXQoKSkpOworICAgICAgICBDR1BvaW50IHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQ
b3NpdGlvbihjb250ZXh0KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRl
eHQsIGxhYmVsQm91bmRzLm9yaWdpbi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCk7
CisgICAgICAgIENUTGluZURyYXcobGluZS5nZXQoKSwgY29udGV4dCk7CisgICAgICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB0ZXh0UG9zaXRpb24ueCwgdGV4dFBvc2l0aW9u
LnkpOwogICAgIAogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAg
ICAgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9D
b3JlVGV4dFNQSVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVU
ZXh0U1BJV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGFkOWQ3N2I5NWVmMjU3ZjUzY2E2MzJhMzUzMjY3
Yjg5N2ZkZWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L3dpbi9Db3JlVGV4dFNQSVdpbi5jcHAKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb3JlVGV4dFNQSVdpbi5oIgorCitleHRlcm4g
IkMiIHsKKworY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEF0dHJpYnV0ZU5hbWUgPSBDRlNUUigi
TlNGb250Iik7CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L3dpbi9Db3JlVGV4dFNQSVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL3dpbi9D
b3JlVGV4dFNQSVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMzI0Mjc3YmY3NGJlMjhjOGQ2YmM1OTA3Zjlj
NzRjZGU5NGJlOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvd2luL0NvcmVUZXh0U1BJV2luLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
KyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8Q29yZVRl
eHQvQ29yZVRleHQuaD4KKworZXh0ZXJuICJDIiB7CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q1RGb250KiBDVEZvbnRSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NUTGluZSogQ1RMaW5l
UmVmOworCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEF0dHJpYnV0ZU5hbWU7CisK
K0NURm9udFJlZiBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlN0cmluZ1JlZiBuYW1lLCBDR0Zsb2F0
IHNpemUsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiBtYXRyaXgpOworQ1RMaW5lUmVmIENUTGlu
ZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKENGQXR0cmlidXRlZFN0cmluZ1JlZik7Cit2b2lk
IENUTGluZURyYXcoQ1RMaW5lUmVmLCBDR0NvbnRleHRSZWYpOworCit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V2luLmNtYWtlCmluZGV4IDQ1ZmE4MjA5ZGFhMTIyOGZhNjJkYzZiMTFiMjQzNTkwNDUwM2Y3ZGEu
LjE4Y2I5OTBhZTNiODMxMmY1MzEyN2ZmZWYzZGE4MzNjNmZiYTMxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdpbi5jbWFrZQpAQCAtMjUsNiArMjUsNyBAQCBlbHNlICgpCiAgICAgICAgIFBSSVZBVEUgQ0ZO
ZXR3b3JrJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgQ29yZUZvdW5kYXRpb24ke0RF
QlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBDb3JlR3JhcGhpY3Mke0RFQlVHX1NVRkZJWH0K
KyAgICAgICAgUFJJVkFURSBDb3JlVGV4dCR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklWQVRF
IFNRTGl0ZTMke0RFQlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2Uke0RFQlVHX1NVRkZJWH0KICAgICAgICAgUFJJVkFURSBsaWJkaXNwYXRjaCR7REVCVUdf
U1VGRklYfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGJiNTU1ZWYxYzNiZTRiM2Q4YTcxZDU3ZDI4YWU5NzVkZDJkMmUxNDguLjc2N2JlMDZiNzk4
NjM1NWI0MjJmZTE0MzA0ZWU3N2E5YjdhMzA5YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOC0xNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
TWlncmF0ZSBvZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3JhcGhpY3MgQVBJIENHQ29udGV4dFNlbGVj
dEZvbnQoKSBhbmQgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbmsgdG8gdGhlIGV4aXN0aW5nIENvcmVU
ZXh0IGZyYW1ld29yay4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNt
YWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6CisKIDIwMTYt
MDgtMTcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBuYXZlcmNvcnAuY29tPgogCiAgICAg
ICAgIFtFRkxdIEJ1bXAgZWZsIHZlcnNpb24gZnJvbSAxLjE3IHRvIDEuMTgKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggYjY4ZGViMDVhNzQ5OWEwMzQ2YjJlNGVmYmZm
NzhhOTg4NjIzMjBiMy4uYzZmNzg0Y2Q3ODBmNjA4MmNmMjc4YzAwOTAzNDJiN2RhNGVhMjkxMyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTExNiw2ICsxMTYsNyBA
QCBlbHNlICgpCiAgICAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVMaWJfTElCUkFSSUVTCiAg
ICAgICAgIENGTmV0d29yawogICAgICAgICBDb3JlR3JhcGhpY3MKKyAgICAgICAgQ29yZVRleHQK
ICAgICApCiAgICAgbGlzdChBUFBFTkQgSW1hZ2VEaWZmX1NPVVJDRVMKICAgICAgICAgY2cvSW1h
Z2VEaWZmQ0cuY3BwCkBAIC0xMjMsNiArMTI0LDcgQEAgZWxzZSAoKQogICAgIGxpc3QoQVBQRU5E
IEltYWdlRGlmZl9MSUJSQVJJRVMKICAgICAgICBDb3JlRm91bmRhdGlvbgogICAgICAgIENvcmVH
cmFwaGljcworICAgICAgIENvcmVUZXh0CiAgICAgKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggZWFmMjViNzk1OWZlYjdhMWEwNGUwYzI1OGNiYzcz
MWY2ODU1YTJiNS4uODIyZDk0MTI4YzU0NDEwNTgyNDY4OWFhYTFkODRjMDIzNjhiOTE5MyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC03Miw2ICs3Miw3IEBAIGVsc2Ug
KCkKICAgICAgICAgQ0ZOZXR3b3JrJHtERUJVR19TVUZGSVh9CiAgICAgICAgIENvcmVGb3VuZGF0
aW9uJHtERUJVR19TVUZGSVh9CiAgICAgICAgIENvcmVHcmFwaGljcyR7REVCVUdfU1VGRklYfQor
ICAgICAgICBDb3JlVGV4dCR7REVCVUdfU1VGRklYfQogICAgICAgICBRdWFydHpDb3JlJHtERUJV
R19TVUZGSVh9CiAgICAgICAgIFNRTGl0ZTMke0RFQlVHX1NVRkZJWH0KICAgICAgICAgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlJHtERUJVR19TVUZGSVh9Cg==
</data>
<flag name="review"
          id="309873"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286363</attachid>
            <date>2016-08-17 22:19:10 -0700</date>
            <delta_ts>2016-08-17 23:39:51 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-160895-20160817221721.patch</filename>
            <type>text/plain</type>
            <size>17088</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VkMzA1N2JjMzUzZGFl
NWZhZTI0N2FlMmJlZDYzODc5YzRlZGVmMi4uZWEwN2JiZjI5NmRhNjYxN2ZkNmFmNzYwNmJmOGJm
YWRjOTJmMzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA4LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBN
aWdyYXRlIG9mZiBvZiBkZXByZWNhdGVkIENvcmVHcmFwaGljcyBBUEkgQ0dDb250ZXh0U2VsZWN0
Rm9udCgpIGFuZCBDR0NvbnRleHRTaG93VGV4dEF0UG9pbnQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE1pZ3JhdGUgdG8gQ1RMaW5lRHJhdygpIGluc3Rl
YWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9ydCBmb3IgbGlua2luZyB0
byB0aGUgZXhpc3RpbmcgQ29yZVRleHQgZnJhbWV3b3JrIG9uIFdpbmRvd3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlT3ZlcmxheUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvd1RleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdUZXh0QXRQb2ludCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRp
bGVDYWNoZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0
U1BJV2luLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL3dpbi9Db3JlVGV4dFNQ
SVdpbi5oOiBBZGRlZC4KKwogMjAxNi0wOC0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWIgSURMXSBBZGQgc3VwcG9ydCBmb3IgZGljdGlvbmFyeSBtZW1i
ZXJzIG9mIGRpY3Rpb25hcnkgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjkzN2Y4ZWQ5MDEyN2QwYzkyNDk5
YmM3NjQyMjE2ODVlN2QwMWFkNy4uODFjMTMwYTZmOWVlYjg0NjRhZDQ1ZDYyMDY3MWQyZDliOGE5
OGYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOC0xNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gTWlncmF0ZSBv
ZmYgb2YgZGVwcmVjYXRlZCBDb3JlR3JhcGhpY3MgQVBJIENHQ29udGV4dFNlbGVjdEZvbnQoKSBh
bmQgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4g
SmFja3Nvbi4KKworICAgICAgICBMaW5rIHRvIHRoZSBleGlzdGluZyBDb3JlVGV4dCBmcmFtZXdv
cmsuCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKwogMjAxNi0wOC0xNiAgSHVuc2Vv
cCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
Q01ha2UgYnVpbGQgZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDE0ZWZjNDNiZDdh
ZmU5MWQxZjFiZjA5ZDkwZDAxZjU3ZGMxN2RhOGIuLmI0Mzg3ZjdhZTQ4MzQ5MGVmMzQzNDg3OTMz
NTUxZTE1ZjhiMjhlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0zNCw2ICszNCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3BpL3dpbiIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vd2luIgogICAgICIke1RISVJEUEFSVFlfRElSfS9BTkdMRS9p
bmNsdWRlIgogICAgICIke1RISVJEUEFSVFlfRElSfS9BTkdMRS9pbmNsdWRlL2VnbCIKQEAgLTEw
NCw2ICsxMDUsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3dp
bi9OZXR3b3JrU3RhdGVOb3RpZmllcldpbi5jcHAKIAorICAgIHBsYXRmb3JtL3NwaS93aW4vQ29y
ZVRleHRTUElXaW4uY3BwCisKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCiAKICAg
ICBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggNWU4
NDhmNmZiZWE1ZmRlNzQ5OGU3MzMyNDIzZTgzMWI4YzYzNmYxZS4uMjUxYWUwNjFjODM2Zjg5NWU4
OTkyZWE0YmU4ZmFlM2M3NjgzZTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogCisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRl
eHQuaD4KKwogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VVc2FnZVRocmVhZC5oIgpAQCAtMjUyLDIxICsyNTQs
MjQgQEAgc3RhdGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgs
IGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3IsIGMKICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldp
dGhDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKLSAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNv
bnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKSk7Ci0KLSAgICAvLyBGSVhN
RTogRG9uJ3QgdXNlIGRlcHJlY2F0ZWQgQVBJcy4KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xh
cmF0aW9ucyIKLQorICAgIENHQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNm
b3JtTWFrZVNjYWxlKDEsIC0xKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2Vs
ZWN0Rm9udChjb250ZXh0LCAiQ291cmllciIsIDEwLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKKyAg
ICBDRlN0cmluZ1JlZiBmb250TmFtZSA9IENGU1RSKCJDb3VyaWVyIik7CisgICAgQ0dGbG9hdCBm
b250U2l6ZSA9IDEwOwogI2Vsc2UKLSAgICBDR0NvbnRleHRTZWxlY3RGb250KGNvbnRleHQsICJN
ZW5sbyIsIDExLCBrQ0dFbmNvZGluZ01hY1JvbWFuKTsKKyAgICBDRlN0cmluZ1JlZiBmb250TmFt
ZSA9IENGU1RSKCJNZW5sbyIpOworICAgIENHRmxvYXQgZm9udFNpemUgPSAxMTsKICNlbmRpZgot
CisgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0
aE5hbWUoZm9udE5hbWUsIGZvbnRTaXplLCAmbWF0cml4KSk7CisgICAgQ0ZUeXBlUmVmIGtleXNb
XSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUsIGtDVEZvcmVncm91bmRDb2xvckZyb21Db250ZXh0
QXR0cmlidXRlTmFtZSB9OworICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSwg
a0NGQm9vbGVhblRydWUgfTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhdHRyaWJ1
dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5
cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ1N0cmlu
ZyBjc3RyID0gdGV4dC5hc2NpaSgpOwotICAgIENHQ29udGV4dFNob3dUZXh0QXRQb2ludChjb250
ZXh0LCB4LCB5LCBjc3RyLmRhdGEoKSwgY3N0ci5sZW5ndGgoKSk7Ci0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjc3RyLmRhdGEoKSksIGNzdHIubGVuZ3RoKCksIGtD
RlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0
YWluUHRyPENGQXR0cmlidXRlZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0Yo
Q0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQo
KSwgYXR0cmlidXRlcy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBh
ZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcu
Z2V0KCkpKTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgeCwgeSk7Cisg
ICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKIAogICAgIENHQ29udGV4dFJlc3Rv
cmVHU3RhdGUoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAwMGEyNTczYWZmMTJlZjg5
ZGIyYTUxMDgxM2JmZTBjOWUzYWQxMTc3Li5jNjg3NmQ5YmY0Y2Y3YWM3YmQ3OTY5MzVjNDJkMDE2
MGNhN2U4YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTI2LDEyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogCisjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4
dC5oPgorCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJMYXllclBv
b2wuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCisjaWYgUExBVEZPUk0o
V0lOKQorI2luY2x1ZGUgIkNvcmVUZXh0U1BJV2luLmgiCisjZW5kaWYKKwogI2lmIFVTRShDQSkK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIxLDEyICsxMjgsMTYgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmZsaXBDb250ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IGhlaWdo
dCkKIC8vIFRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIFdp
bmRvd3MgQ0cgPHJkYXI6Ly9wcm9ibGVtLzIyNzAzNDcwPgogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdUZXh0QXRQb2ludChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dGbG9hdCB4LCBDR0Zsb2F0
IHksIENHU2l6ZSBzY2FsZSwgQ0dGbG9hdCBmb250U2l6ZSwgY29uc3QgY2hhciogdGV4dCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
LSAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFr
ZVNjYWxlKHNjYWxlLndpZHRoLCBzY2FsZS5oZWlnaHQpKTsKLSAgICBDR0NvbnRleHRTZWxlY3RG
b250KGNvbnRleHQsICJIZWx2ZXRpY2EiLCBmb250U2l6ZSwga0NHRW5jb2RpbmdNYWNSb21hbik7
Ci0gICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIHgsIHksIHRleHQsIGxlbmd0
aCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
bWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoc2NhbGUud2lkdGgsIHNjYWxlLmhl
aWdodCk7CisgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3Jl
YXRlV2l0aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCBmb250U2l6ZSwgJm1hdHJpeCkpOworICAg
IENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBrQ1RGb3JlZ3JvdW5k
Q29sb3JGcm9tQ29udGV4dEF0dHJpYnV0ZU5hbWUgfTsKKyAgICBDRlR5cGVSZWYgdmFsdWVzW10g
PSB7IGZvbnQuZ2V0KCksIGtDRkJvb2xlYW5UcnVlIH07CisgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4odGV4dCksIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBm
YWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJp
bmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRo
QXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CisgICAgQ0dDb250ZXh0
U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOworICAgIENUTGluZURyYXcobGluZS5nZXQo
KSwgY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNB
TGF5ZXI6OmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBjbGllbnQsIElu
dFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCmluZGV4IGQ4ZDEwNTU4YjJmZDM1MWI2ZDQxYjYyODgzZmMwOTM2NzlhZTI4NjguLjU0
NTZmNGI0NzdjZDFjM2VhZWM3ZTg5NWU2N2ZlN2IyZmQwNmM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKwog
I2luY2x1ZGUgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW5jbHVkZSAiTGVnYWN5
VGlsZUdyaWQuaCIKICNpbmNsdWRlICJMZWdhY3lUaWxlR3JpZFRpbGUuaCIKQEAgLTU5MSwxNCAr
NTkzLDE3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIoTGVnYWN5VGlsZUxheWVy
KiBsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgICAgICAgICBDR0NvbnRleHRTZXRS
R0JGaWxsQ29sb3IoY29udGV4dCwgMSwgMCwgMCwgMC40Zik7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAxLCAxLCAwLjZmKTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSkpOwot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBDR0NvbnRleHRTZWxl
Y3RGb250KGNvbnRleHQsICJIZWx2ZXRpY2EiLCAyNSwga0NHRW5jb2RpbmdNYWNSb21hbik7Ci0g
ICAgICAgIENHQ29udGV4dFNob3dUZXh0QXRQb2ludChjb250ZXh0LCBsYWJlbEJvdW5kcy5vcmln
aW4ueCArIDMsIGxhYmVsQm91bmRzLm9yaWdpbi55ICsgMjAsIHRleHQsIHN0cmxlbih0ZXh0KSk7
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zv
cm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOworICAgICAgICBS
ZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShD
RlNUUigiSGVsdmV0aWNhIiksIDI1LCAmbWF0cml4KSk7CisgICAgICAgIENGVHlwZVJlZiBrZXlz
W10gPSB7IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBrQ1RGb3JlZ3JvdW5kQ29sb3JGcm9tQ29udGV4
dEF0dHJpYnV0ZU5hbWUgfTsKKyAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250Lmdl
dCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OworICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odGV4dCksIHN0cmxlbih0ZXh0KSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1
dGVkU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJp
bmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdl
dCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUgPSBhZG9wdENGKENUTGlu
ZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKKyAg
ICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIGxhYmVsQm91bmRzLm9yaWdp
bi54ICsgMywgbGFiZWxCb3VuZHMub3JpZ2luLnkgKyAyMCk7CisgICAgICAgIENUTGluZURyYXco
bGluZS5nZXQoKSwgY29udGV4dCk7CiAgICAgCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7ICAgICAgICAKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS93aW4vQ29yZVRleHRTUElXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMGM0MWU5MDMxOTI0
M2E3MmNiMDY4ZWIxNzAwMTUwYWZlYzQxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmNwcApAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvcmVUZXh0U1BJ
V2luLmgiCisKK2V4dGVybiAiQyIgeworCitjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250QXR0cmli
dXRlTmFtZSA9IENGU1RSKCJOU0ZvbnQiKTsKK2NvbnN0IENGU3RyaW5nUmVmIGtDVEZvcmVncm91
bmRDb2xvckZyb21Db250ZXh0QXR0cmlidXRlTmFtZSA9IENGU1RSKCJDVEZvcmVncm91bmRDb2xv
ckZyb21Db250ZXh0Iik7CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3BpL3dpbi9Db3JlVGV4dFNQSVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L3dpbi9Db3JlVGV4dFNQSVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNjg2NWQzYjA1NDYzNmY0ODEzY2Vk
OGJlYTFlNDNmNGNiOTQzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8
Q29yZVRleHQvQ29yZVRleHQuaD4KKworZXh0ZXJuICJDIiB7CisKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ1RGb250KiBDVEZvbnRSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NUTGluZSog
Q1RMaW5lUmVmOworCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9udEF0dHJpYnV0ZU5h
bWU7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NURm9yZWdyb3VuZENvbG9yRnJvbUNvbnRl
eHRBdHRyaWJ1dGVOYW1lOworCitDVEZvbnRSZWYgQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTdHJp
bmdSZWYgbmFtZSwgQ0dGbG9hdCBzaXplLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSogbWF0cml4
KTsKK0NUTGluZVJlZiBDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhDRkF0dHJpYnV0
ZWRTdHJpbmdSZWYpOwordm9pZCBDVExpbmVEcmF3KENUTGluZVJlZiwgQ0dDb250ZXh0UmVmKTsK
KworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0NWZhODIwOWRhYTEyMjhmYTYyZGM2
YjExYjI0MzU5MDQ1MDNmN2RhLi4xOGNiOTkwYWUzYjgzMTJmNTMxMjdmZmVmM2RhODMzYzZmYmEz
MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTI1LDYgKzI1LDcgQEAgZWxzZSAoKQog
ICAgICAgICBQUklWQVRFIENGTmV0d29yayR7REVCVUdfU1VGRklYfQogICAgICAgICBQUklWQVRF
IENvcmVGb3VuZGF0aW9uJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUgQ29yZUdyYXBo
aWNzJHtERUJVR19TVUZGSVh9CisgICAgICAgIFBSSVZBVEUgQ29yZVRleHQke0RFQlVHX1NVRkZJ
WH0KICAgICAgICAgUFJJVkFURSBTUUxpdGUzJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZB
VEUgV2ViS2l0U3lzdGVtSW50ZXJmYWNlJHtERUJVR19TVUZGSVh9CiAgICAgICAgIFBSSVZBVEUg
bGliZGlzcGF0Y2gke0RFQlVHX1NVRkZJWH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODc2OThjM2FhZjc2Mjg3OWM0YTcyMWYyZDZkYTgxMDUx
ODNjNmFhLi5lYjMzMzU0YWViMDFmYTdjYjM3MTgxNTI0YzIyZjk5YmFjZTcyY2MzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTYtMDgtMTcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIE1pZ3JhdGUgb2ZmIG9mIGRlcHJlY2F0ZWQgQ29yZUdyYXBoaWNz
IEFQSSBDR0NvbnRleHRTZWxlY3RGb250KCkgYW5kIENHQ29udGV4dFNob3dUZXh0QXRQb2ludCgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgTGluayB0byB0
aGUgZXhpc3RpbmcgQ29yZVRleHQgZnJhbWV3b3JrLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdp
bi5jbWFrZToKKwogMjAxNi0wOC0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBSZW1vdmUgb2xkIGxpYnJhcmllcyBmcm9tIGJ1aWxkIGlucHV0
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1XaW4uY21ha2UgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBiNjhkZWIwNWE3NDk5
YTAzNDZiMmU0ZWZiZmY3OGE5ODg2MjMyMGIzLi5jNmY3ODRjZDc4MGY2MDgyY2YyNzhjMDA5MDM0
MmI3ZGE0ZWEyOTEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdp
bi5jbWFrZQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTE2LDYgKzExNiw3IEBAIGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZUxp
Yl9MSUJSQVJJRVMKICAgICAgICAgQ0ZOZXR3b3JrCiAgICAgICAgIENvcmVHcmFwaGljcworICAg
ICAgICBDb3JlVGV4dAogICAgICkKICAgICBsaXN0KEFQUEVORCBJbWFnZURpZmZfU09VUkNFUwog
ICAgICAgICBjZy9JbWFnZURpZmZDRy5jcHAKQEAgLTEyMyw2ICsxMjQsNyBAQCBlbHNlICgpCiAg
ICAgbGlzdChBUFBFTkQgSW1hZ2VEaWZmX0xJQlJBUklFUwogICAgICAgIENvcmVGb3VuZGF0aW9u
CiAgICAgICAgQ29yZUdyYXBoaWNzCisgICAgICAgQ29yZVRleHQKICAgICApCiBlbmRpZiAoKQog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBlYWYyNWI3OTU5ZmViN2Ex
YTA0ZTBjMjU4Y2JjNzMxZjY4NTVhMmI1Li44MjJkOTQxMjhjNTQ0MTA1ODI0Njg5YWFhMWQ4NGMw
MjM2OGI5MTkzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNt
YWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTcyLDYg
KzcyLDcgQEAgZWxzZSAoKQogICAgICAgICBDRk5ldHdvcmske0RFQlVHX1NVRkZJWH0KICAgICAg
ICAgQ29yZUZvdW5kYXRpb24ke0RFQlVHX1NVRkZJWH0KICAgICAgICAgQ29yZUdyYXBoaWNzJHtE
RUJVR19TVUZGSVh9CisgICAgICAgIENvcmVUZXh0JHtERUJVR19TVUZGSVh9CiAgICAgICAgIFF1
YXJ0ekNvcmUke0RFQlVHX1NVRkZJWH0KICAgICAgICAgU1FMaXRlMyR7REVCVUdfU1VGRklYfQog
ICAgICAgICBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uke0RFQlVHX1NVRkZJWH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>