<?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>165086</bug_id>
          
          <creation_ts>2016-11-27 16:43:25 -0800</creation_ts>
          <short_desc>Make CanvasRenderingContext2D use WebIDL unions / Variants for createPattern and drawImage</short_desc>
          <delta_ts>2016-11-28 17:04:05 -0800</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253796</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-27 16:43:25 -0800</bug_when>
    <thetext>Make CanvasRenderingContext2D use WebIDL unions / Variants for createPattern and drawImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253797</commentid>
    <comment_count>1</comment_count>
      <attachid>295475</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-27 16:45:31 -0800</bug_when>
    <thetext>Created attachment 295475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253851</commentid>
    <comment_count>2</comment_count>
      <attachid>295475</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-28 09:16:54 -0800</bug_when>
    <thetext>Comment on attachment 295475
Patch

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

r=me but please check GTK/EFL build.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:137
&gt; +    // FIXME: All the unrestricted float arguments below should be unrestricted doubles.

I think we can get away with doing this change in tis patch (only in the IDL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253852</commentid>
    <comment_count>3</comment_count>
      <attachid>295475</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-28 09:19:51 -0800</bug_when>
    <thetext>Comment on attachment 295475
Patch

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

Some compilation problems with gcc on the GTK and EFL bots. Not sure what’s going on there. Maybe [&amp;] isn’t supposed to capture &quot;this&quot;?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:58
&gt; +using CanvasImageSource = Variant&lt;RefPtr&lt;HTMLImageElement&gt;, RefPtr&lt;HTMLVideoElement&gt;, RefPtr&lt;HTMLCanvasElement&gt;&gt;;

So sad that these all have to be RefPtr, when none are allowed to be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253882</commentid>
    <comment_count>4</comment_count>
      <attachid>295501</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-28 10:41:02 -0800</bug_when>
    <thetext>Created attachment 295501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254050</commentid>
    <comment_count>5</comment_count>
      <attachid>295539</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-28 15:28:38 -0800</bug_when>
    <thetext>Created attachment 295539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254062</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-28 15:42:33 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 295475 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295475&amp;action=review
&gt; 
&gt; Some compilation problems with gcc on the GTK and EFL bots. Not sure what’s
&gt; going on there. Maybe [&amp;] isn’t supposed to capture &quot;this&quot;?

It&apos;s a GCC bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61636) I can work around it using an explicit this-&gt;.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:58
&gt; &gt; +using CanvasImageSource = Variant&lt;RefPtr&lt;HTMLImageElement&gt;, RefPtr&lt;HTMLVideoElement&gt;, RefPtr&lt;HTMLCanvasElement&gt;&gt;;
&gt; 
&gt; So sad that these all have to be RefPtr, when none are allowed to be null.

Yeah, it&apos;s something I would like to improve at some point, but I am not quite sure how yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254110</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-28 17:04:05 -0800</bug_when>
    <thetext>Committed r209048: &lt;http://trac.webkit.org/changeset/209048&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295475</attachid>
            <date>2016-11-27 16:45:31 -0800</date>
            <delta_ts>2016-11-28 10:40:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165086-20161127164508.patch</filename>
            <type>text/plain</type>
            <size>19598</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTExLTI3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgdXNlIFdlYklETCB1bmlvbnMgLyBWYXJpYW50cyBmb3IgY3JlYXRlUGF0dGVybiBhbmQg
ZHJhd0ltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaXplKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBvZiBzaXplIGZvciBlYWNoIHR5
cGUgb2YgQ2FudmFzU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsOgorICAgICAgICBVc2UgdmFyaWFudHMgdG8gcmVkdWNlIGNvZGUgZHVwbGlj
YXRpb24gYW5kIG1hdGNoIHNwZWMgbGFuZ3VhZ2UgaW4gZHJhd0ltYWdlIGFuZCBjcmVhdGVQYXR0
ZXJuLgorCiAyMDE2LTExLTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHVudXNlZCBET01SZXF1ZXN0U3RhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2
aXNpb24gMjA4OTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgZW51
bSBJbWFnZVNpemVUeXBlIHsKICAgICBJbWFnZVNpemVCZWZvcmVEZXZpY2VQaXhlbFJhdGlvCiB9
OwogCi1zdGF0aWMgTGF5b3V0U2l6ZSBzaXplKEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVu
dCwgSW1hZ2VTaXplVHlwZSBzaXplVHlwZSkKK3N0YXRpYyBMYXlvdXRTaXplIHNpemUoSFRNTElt
YWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBJbWFnZVNpemVUeXBlIHNpemVUeXBlID0gSW1hZ2VT
aXplQmVmb3JlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICBMYXlvdXRTaXplIHNpemU7CiAgICAg
aWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgp
KSB7CkBAIC0xMzMwLDYgKzEzMzAsMTEgQEAgc3RhdGljIExheW91dFNpemUgc2l6ZShIVE1MSW1h
Z2VFbGVtZW50JgogICAgIHJldHVybiBzaXplOwogfQogCitzdGF0aWMgRmxvYXRTaXplIHNpemUo
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCit7CisgICAgcmV0dXJuIEZsb2F0U2l6
ZShjYW52YXNFbGVtZW50LnNpemUoKSk7Cit9CisKICNpZiBFTkFCTEUoVklERU8pCiBzdGF0aWMg
RmxvYXRTaXplIHNpemUoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8pCiB7CkBAIC0xMzQ3LDIxICsx
MzUyLDM4IEBAIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IG5vcm1hbGl6ZVJlY3QoY28KICAgICAg
ICAgc3RkOjptYXgocmVjdC5oZWlnaHQoKSwgLXJlY3QuaGVpZ2h0KCkpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdl
RWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9hdCB4LCBmbG9hdCB5KQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2Um
JiBpbWFnZSwgZmxvYXQgZHgsIGZsb2F0IGR5KQogewotICAgIExheW91dFNpemUgZGVzdFJlY3RT
aXplID0gc2l6ZShpbWFnZUVsZW1lbnQsIEltYWdlU2l6ZUFmdGVyRGV2aWNlUGl4ZWxSYXRpbyk7
Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIHgsIHksIGRlc3RSZWN0U2l6ZS53
aWR0aCgpLCBkZXN0UmVjdFNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGltYWdlLAorICAgICAgICBbJl0gKFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VFbGVt
ZW50KSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgICAgICAgICBMYXlvdXRTaXplIGRlc3RS
ZWN0U2l6ZSA9IHNpemUoKmltYWdlRWxlbWVudCwgSW1hZ2VTaXplQWZ0ZXJEZXZpY2VQaXhlbFJh
dGlvKTsKKyAgICAgICAgICAgIExheW91dFNpemUgc291cmNlUmVjdFNpemUgPSBzaXplKCppbWFn
ZUVsZW1lbnQsIEltYWdlU2l6ZUJlZm9yZURldmljZVBpeGVsUmF0aW8pOworICAgICAgICAgICAg
cmV0dXJuIGRyYXdJbWFnZSgqaW1hZ2VFbGVtZW50LCBGbG9hdFJlY3QgeyAwLCAwLCBzb3VyY2VS
ZWN0U2l6ZS53aWR0aCgpLCBzb3VyY2VSZWN0U2l6ZS5oZWlnaHQoKSB9LCBGbG9hdFJlY3QgeyBk
eCwgZHksIGRlc3RSZWN0U2l6ZS53aWR0aCgpLCBkZXN0UmVjdFNpemUuaGVpZ2h0KCkgfSk7Cisg
ICAgICAgIH0sCisgICAgICAgIFsmXSAoYXV0byYgZWxlbWVudCkgLT4gRXhjZXB0aW9uT3I8dm9p
ZD4geworICAgICAgICAgICAgRmxvYXRTaXplIGVsZW1lbnRTaXplID0gc2l6ZSgqZWxlbWVudCk7
CisgICAgICAgICAgICByZXR1cm4gZHJhd0ltYWdlKCplbGVtZW50LCBGbG9hdFJlY3QgeyAwLCAw
LCBlbGVtZW50U2l6ZS53aWR0aCgpLCBlbGVtZW50U2l6ZS5oZWlnaHQoKSB9LCBGbG9hdFJlY3Qg
eyBkeCwgZHksIGVsZW1lbnRTaXplLndpZHRoKCksIGVsZW1lbnRTaXplLmhlaWdodCgpIH0pOwor
ICAgICAgICB9CisgICAgKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2Um
JiBpbWFnZSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpCiB7Ci0gICAg
TGF5b3V0U2l6ZSBzb3VyY2VSZWN0U2l6ZSA9IHNpemUoaW1hZ2VFbGVtZW50LCBJbWFnZVNpemVC
ZWZvcmVEZXZpY2VQaXhlbFJhdGlvKTsKLSAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlRWxlbWVu
dCwgRmxvYXRSZWN0IHsgMCwgMCwgc291cmNlUmVjdFNpemUud2lkdGgoKSwgc291cmNlUmVjdFNp
emUuaGVpZ2h0KCkgfSwgRmxvYXRSZWN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9KTsKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpbWFnZSwKKyAgICAgICAgWyZdIChhdXRvJiBlbGVtZW50KSAt
PiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgICAgICAgICBGbG9hdFNpemUgZWxlbWVudFNpemUg
PSBzaXplKCplbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoKmVsZW1lbnQs
IEZsb2F0UmVjdCB7IDAsIDAsIGVsZW1lbnRTaXplLndpZHRoKCksIGVsZW1lbnRTaXplLmhlaWdo
dCgpIH0sIEZsb2F0UmVjdCB7IGR4LCBkeSwgZHcsIGRoIH0pOworICAgICAgICB9CisgICAgKTsK
IH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZs
b2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgp
CitFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShD
YW52YXNJbWFnZVNvdXJjZSYmIGltYWdlLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBm
bG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpCiB7Ci0gICAg
cmV0dXJuIGRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIEZsb2F0UmVjdCB7IHN4LCBzeSwgc3csIHNo
IH0sIEZsb2F0UmVjdCB7IGR4LCBkeSwgZHcsIGRoIH0pOworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGltYWdlLAorICAgICAgICBbJl0gKGF1dG8mIGVsZW1lbnQpIC0+IEV4Y2VwdGlvbk9yPHZv
aWQ+IHsKKyAgICAgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoKmVsZW1lbnQsIEZsb2F0UmVjdCB7
IHN4LCBzeSwgc3csIHNoIH0sIEZsb2F0UmVjdCB7IGR4LCBkeSwgZHcsIGRoIH0pOworICAgICAg
ICB9CisgICAgKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKQEAgLTE0NDYsMjEgKzE0
NjgsNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJjZUNhbnZhcywgZmxvYXQgeCwgZmxv
YXQgeSkKLXsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHNvdXJjZUNhbnZhcywgMCwgMCwgc291cmNl
Q2FudmFzLndpZHRoKCksIHNvdXJjZUNhbnZhcy5oZWlnaHQoKSwgeCwgeSwgc291cmNlQ2FudmFz
LndpZHRoKCksIHNvdXJjZUNhbnZhcy5oZWlnaHQoKSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3VyY2VDYW52YXMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
Ci17Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShzb3VyY2VDYW52YXMsIEZsb2F0UmVjdCgwLCAwLCBz
b3VyY2VDYW52YXMud2lkdGgoKSwgc291cmNlQ2FudmFzLmhlaWdodCgpKSwgRmxvYXRSZWN0IHsg
eCwgeSwgd2lkdGgsIGhlaWdodCB9KTsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJjZUNhbnZh
cywgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9h
dCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKQotewotICAgIHJldHVybiBkcmF3SW1hZ2Uoc291cmNl
Q2FudmFzLCBGbG9hdFJlY3Qoc3gsIHN5LCBzdywgc2gpLCBGbG9hdFJlY3QoZHgsIGR5LCBkdywg
ZGgpKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJjZUNhbnZhcywgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCiB7CiAgICAgRmxvYXRSZWN0IHNy
Y0NhbnZhc1JlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VDYW52YXMuc2l6ZSgp
KTsKQEAgLTE1MTgsMjMgKzE1MjUsNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvLCBm
bG9hdCB4LCBmbG9hdCB5KQotewotICAgIEZsb2F0U2l6ZSB2aWRlb1NpemUgPSBzaXplKHZpZGVv
KTsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHZpZGVvLCB4LCB5LCB2aWRlb1NpemUud2lkdGgoKSwg
dmlkZW9TaXplLmhlaWdodCgpKTsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgRmxvYXRTaXplIHZp
ZGVvU2l6ZSA9IHNpemUodmlkZW8pOwotICAgIHJldHVybiBkcmF3SW1hZ2UodmlkZW8sIEZsb2F0
UmVjdCB7IDAsIDAsIHZpZGVvU2l6ZS53aWR0aCgpLCB2aWRlb1NpemUuaGVpZ2h0KCkgfSwgRmxv
YXRSZWN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9KTsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW8sIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxv
YXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCkKLXsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHZpZGVv
LCBGbG9hdFJlY3QgeyBzeCwgc3ksIHN3LCBzaCB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGR3LCBk
aCB9KTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewogICAgIGlmICh2aWRlby5yZWFkeVN0YXRl
KCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5HIHx8IHZpZGVvLnJlYWR5U3RhdGUo
KSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX01FVEFEQVRBKQpAQCAtMTc0OCwxMiArMTczOCwx
OSBAQCBFeGNlcHRpb25PcjxSZWY8Q2FudmFzR3JhZGllbnQ+PiBDYW52YXNSCiAgICAgcmV0dXJu
IFdURk1vdmUoZ3JhZGllbnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVt
ZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUpCitFeGNlcHRp
b25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3Jl
YXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmIGltYWdlLCBjb25zdCBTdHJpbmcmIHJlcGV0
aXRpb24pCiB7CiAgICAgYm9vbCByZXBlYXRYLCByZXBlYXRZOwotICAgIGlmICghQ2FudmFzUGF0
dGVybjo6cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVwZWF0WCwgcmVwZWF0
WSkpCisgICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJlcGV0aXRpb25UeXBlKHJlcGV0aXRp
b24sIHJlcGVhdFgsIHJlcGVhdFkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFY
X0VSUiB9OwogCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaW1hZ2UsCisgICAgICAgIFsmXShh
dXRvJiBlbGVtZW50KSAtPiBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IHsgcmV0
dXJuIGNyZWF0ZVBhdHRlcm4oKmVsZW1lbnQsIHJlcGVhdFgsIHJlcGVhdFkpOyB9CisgICAgKTsK
K30KKworRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKK3sKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGlt
YWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpOwogCiAgICAgLy8gSWYgdGhlIGltYWdlIGxvYWRpbmcg
aGFzbid0IHN0YXJ0ZWQgb3IgdGhlIGltYWdlIGlzIG5vdCBjb21wbGV0ZSwgaXQgaXMgbm90IGZ1
bGx5IGRlY29kYWJsZS4KQEAgLTE3NzcsMjkgKzE3NzQsMjEgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YQogICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4g
eyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGlt
YWdlRWxlbWVudC5yZW5kZXJlcigpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIGNvbnN0IFN0
cmluZyYgcmVwZXRpdGlvblR5cGUpCitFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVu
dCYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsKICAgICBpZiAoIWNhbnZh
cy53aWR0aCgpIHx8ICFjYW52YXMuaGVpZ2h0KCkgfHwgIWNhbnZhcy5idWZmZXIoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKLSAgICBib29sIHJl
cGVhdFgsIHJlcGVhdFk7Ci0gICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJlcGV0aXRpb25U
eXBlKHJlcGV0aXRpb25UeXBlLCByZXBlYXRYLCByZXBlYXRZKSkKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKLQotICAgIHJldHVybiBDYW52YXNQYXR0ZXJuOjpjcmVh
dGUoKmNhbnZhcy5jb3BpZWRJbWFnZSgpLCByZXBlYXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2lu
Q2xlYW4oKSk7CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRl
cm46OmNyZWF0ZSgqY2FudmFzLmNvcGllZEltYWdlKCksIHJlcGVhdFgsIHJlcGVhdFksIGNhbnZh
cy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAgIAogI2lmIEVOQUJMRShWSURFTykKIAotRXhjZXB0
aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNy
ZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBjb25zdCBTdHJpbmcm
IHJlcGV0aXRpb25UeXBlKQorRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW9FbGVtZW50LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsKICAgICBpZiAodmlkZW9F
bGVtZW50LnJlYWR5U3RhdGUoKSA8IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfQ1VSUkVOVF9EQVRB
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBib29sIHJlcGVhdFgsIHJlcGVh
dFk7Ci0gICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJlcGV0aXRpb25UeXBlKHJlcGV0aXRp
b25UeXBlLCByZXBlYXRYLCByZXBlYXRZKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZ
TlRBWF9FUlIgfTsKLQogICAgIGNoZWNrT3JpZ2luKCZ2aWRlb0VsZW1lbnQpOwogICAgIGJvb2wg
b3JpZ2luQ2xlYW4gPSBjYW52YXMoKS5vcmlnaW5DbGVhbigpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAko
cmV2aXNpb24gMjA4OTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3Mg
SFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIFRleHRNZXRyaWNzOwog
Cit1c2luZyBDYW52YXNJbWFnZVNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+LCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4sIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4+
OworCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbnZhc1BhdGggewogcHVibGljOgogICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgdXNlc0NTU0NvbXBh
dGliaWxpdHlQYXJzZU1vZGUsIGJvb2wgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsK
QEAgLTE1NiwyMSArMTU4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhclNoYWRvdygpOwog
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9h
dCB4LCBmbG9hdCB5KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTEltYWdl
RWxlbWVudCYsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQg
c3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxv
YXQgZHcsIGZsb2F0IGRoKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTElt
YWdlRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1l
bnQmLCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2Uo
SFRNTENhbnZhc0VsZW1lbnQmLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1l
bnQmLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZs
b2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJ
bWFnZShIVE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRN
TEltYWdlRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBDb21wb3NpdGVPcGVyYXRvciYsIGNvbnN0IEJsZW5kTW9kZSYpOwot
I2lmIEVOQUJMRShWSURFTykKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZp
ZGVvRWxlbWVudCYsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxWaWRl
b0VsZW1lbnQmLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQg
ZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwotI2VuZGlmCisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
ZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlJiYsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlJiYsIGZsb2F0IGR4
LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBk
cmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UmJiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBz
dywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKTsKIAog
ICAgIHZvaWQgZHJhd0ltYWdlRnJvbVJlY3QoSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IHN4ID0g
MCwgZmxvYXQgc3kgPSAwLCBmbG9hdCBzdyA9IDAsIGZsb2F0IHNoID0gMCwgZmxvYXQgZHggPSAw
LCBmbG9hdCBkeSA9IDAsIGZsb2F0IGR3ID0gMCwgZmxvYXQgZGggPSAwLCBjb25zdCBTdHJpbmcm
IGNvbXBvc2l0ZU9wZXJhdGlvbiA9IGVtcHR5U3RyaW5nKCkpOwogCkBAIC0xODAsMTEgKzE3MCw3
IEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVudD4+IGNyZWF0
ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8Q2FudmFzR3JhZGllbnQ+PiBjcmVhdGVSYWRpYWxHcmFkaWVu
dChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0
IHIxKTsKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRl
cm4oSFRNTEltYWdlRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFz
RWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUpOwotI2lmIEVOQUJMRShWSURF
TykKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4o
SFRNTFZpZGVvRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUpOwotI2VuZGlm
CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENh
bnZhc0ltYWdlU291cmNlJiYsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvbik7CiAKICAgICBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gY3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YSopIGNv
bnN0OwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVhdGVJbWFnZURhdGEo
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgY29uc3Q7CkBAIC0zMzEsNiArMzE3LDE5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKICAgICB2b2lkIGFwcGx5Rmls
bFBhdHRlcm4oKTsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3Jl
YXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkp
OworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihI
VE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyNpZiBFTkFC
TEUoVklERU8pCisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQ
YXR0ZXJuKEhUTUxWaWRlb0VsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7Cisj
ZW5kaWYKKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50
JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbXBv
c2l0ZU9wZXJhdG9yJiwgY29uc3QgQmxlbmRNb2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKKyNlbmRpZgorCiAgICAgdm9pZCBk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9v
bCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gRm9udENhc2NhZGUgYW5kIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Rm9udFByb3h5IG11c3QgaG9sZCBjZXJ0YWluIGludmFyaWFudHMu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDIwODk5MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDEwIEBACiBlbnVtIEltYWdlU21vb3RoaW5nUXVhbGl0eSB7ICJsb3ciLCAi
bWVkaXVtIiwgImhpZ2giIH07CiBlbnVtIENhbnZhc1dpbmRpbmdSdWxlIHsgIm5vbnplcm8iLCAi
ZXZlbm9kZCIgfTsKIAordHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudCBvciBTVkdJbWFnZUVsZW1l
bnQpIEhUTUxPclNWR0ltYWdlRWxlbWVudDsKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBpbmNsdWRl
IFNWR0ltYWdlRWxlbWVudCBhbmQgSW1hZ2VCaXRtYXAuCit0eXBlZGVmIChIVE1MSW1hZ2VFbGVt
ZW50IG9yIEhUTUxWaWRlb0VsZW1lbnQgb3IgSFRNTENhbnZhc0VsZW1lbnQpIENhbnZhc0ltYWdl
U291cmNlOworCiBbCiAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCkBAIC01Myw5ICs1Nyw2IEBAIGVudW0gQ2FudmFzV2luZGluZ1J1bGUgeyAibm9uemVy
byIsICJldmUKIAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0
aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5l
YXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChm
bG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIx
KTsKLQogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgbGluZVdpZHRoOwogICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgbGluZUNhcDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxpbmVK
b2luOwpAQCAtMTMyLDE1ICsxMzMsMTIgQEAgZW51bSBDYW52YXNXaW5kaW5nUnVsZSB7ICJub256
ZXJvIiwgImV2ZQogCiAgICAgdm9pZCBzdHJva2VSZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0
ZWQgZmxvYXQgaGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1h
Z2UoSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhU
TUxJbWFnZUVsZW1lbnQgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVp
Z2h0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVs
ZW1lbnQgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3csIHVucmVzdHJpY3RlZCBmbG9hdCBzaCwgdW5yZXN0cmlj
dGVkIGZsb2F0IGR4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHksIHVucmVzdHJpY3RlZCBmbG9hdCBk
dywgdW5yZXN0cmljdGVkIGZsb2F0IGRoKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgdW5yZXN0cmljdGVkIGZsb2F0IHgs
IHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJh
d0ltYWdlKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVu
cmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBoZWlnaHQpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2Uo
SFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJp
Y3RlZCBmbG9hdCBzeSwgdW5yZXN0cmljdGVkIGZsb2F0IHN3LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c2gsIHVucmVzdHJpY3RlZCBmbG9hdCBkeCwgdW5yZXN0cmljdGVkIGZsb2F0IGR5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgZHcsIHVucmVzdHJpY3RlZCBmbG9hdCBkaCk7Ci0gICAgW0NvbmRpdGlvbmFs
PVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCB2aWRlbywgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKLSAg
ICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShI
VE1MVmlkZW9FbGVtZW50IHZpZGVvLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVk
IGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhl
aWdodCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBk
cmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgdW5yZXN0cmljdGVkIGZsb2F0IHN4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgc3ksIHVucmVzdHJpY3RlZCBmbG9hdCBzdywgdW5yZXN0cmljdGVk
IGZsb2F0IHNoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHgsIHVucmVzdHJpY3RlZCBmbG9hdCBkeSwg
dW5yZXN0cmljdGVkIGZsb2F0IGR3LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZGgpOworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBtb3ZlIHRvIHRoZSBDYW52YXNEcmF3SW1hZ2UgaW50ZXJmYWNlLgor
ICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudHMgYmVsb3cg
c2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVzLgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgdW5yZXN0cmljdGVkIGZsb2F0IHgs
IHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJp
Y3RlZCBmbG9hdCBoZWlnaHQpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1h
Z2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHN5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3csIHVucmVzdHJpY3RlZCBmbG9h
dCBzaCwgdW5yZXN0cmljdGVkIGZsb2F0IGR4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHksIHVucmVz
dHJpY3RlZCBmbG9hdCBkdywgdW5yZXN0cmljdGVkIGZsb2F0IGRoKTsKKwogCiAgICAgdm9pZCBk
cmF3SW1hZ2VGcm9tUmVjdChIVE1MSW1hZ2VFbGVtZW50IGltYWdlLAogICAgICAgICBvcHRpb25h
bCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ggPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c3kgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3cgPSAwLCBvcHRpb25hbCB1bnJl
c3RyaWN0ZWQgZmxvYXQgc2ggPSAwLApAQCAtMTYyLDE0ICsxNjAsMTQgQEAgZW51bSBDYW52YXNX
aW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZQogICAgIHZvaWQgd2Via2l0UHV0SW1hZ2VEYXRh
SEQoSW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHdl
YmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBpbWFnZWRhdGEsIGZsb2F0IGR4LCBmbG9hdCBk
eSwgZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVksIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRp
cnR5SGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybiBjcmVh
dGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgW1RyZWF0TnVsbEFzPUVtcHR5U3Ry
aW5nXSBET01TdHJpbmcgcmVwZXRpdGlvblR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
Q2FudmFzUGF0dGVybiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIFtUcmVh
dE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKTsKLSAgICBbQ29u
ZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQ
YXR0ZXJuKEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8sIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdl
RGF0YSBjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhPyBpbWFnZWRhdGEpOwogICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gp
OwogCiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICBbQ3Vz
dG9tXSBhdHRyaWJ1dGUgY3VzdG9tIGZpbGxTdHlsZTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwg
ZmxvYXQgeDEsIGZsb2F0IHkxKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRp
ZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2Fu
dmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcmVwZXRpdGlvbik7CiAKICAgICAvLyBwaXhl
bCBtYW5pcHVsYXRpb24KICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBnZXRJbWFn
ZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295501</attachid>
            <date>2016-11-28 10:41:02 -0800</date>
            <delta_ts>2016-11-28 15:28:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165086-20161128104039.patch</filename>
            <type>text/plain</type>
            <size>20081</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTExLTI3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgdXNlIFdlYklETCB1bmlvbnMgLyBWYXJpYW50cyBmb3IgY3JlYXRlUGF0dGVybiBhbmQg
ZHJhd0ltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaXplKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBvZiBzaXplIGZvciBlYWNoIHR5
cGUgb2YgQ2FudmFzU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsOgorICAgICAgICBVc2UgdmFyaWFudHMgdG8gcmVkdWNlIGNvZGUgZHVwbGlj
YXRpb24gYW5kIG1hdGNoIHNwZWMgbGFuZ3VhZ2UgaW4gZHJhd0ltYWdlIGFuZCBjcmVhdGVQYXR0
ZXJuLgorCiAyMDE2LTExLTI4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgRklSU1RfTElORV9JTkhFUklURUQgZmFrZSBwc2V1ZG8gc3R5bGUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjA4OTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMxOCw3ICsxMzE4LDcgQEAgZW51bSBJbWFnZVNpemVUeXBlIHsKICAgICBJbWFnZVNpemVCZWZv
cmVEZXZpY2VQaXhlbFJhdGlvCiB9OwogCi1zdGF0aWMgTGF5b3V0U2l6ZSBzaXplKEhUTUxJbWFn
ZUVsZW1lbnQmIGltYWdlRWxlbWVudCwgSW1hZ2VTaXplVHlwZSBzaXplVHlwZSkKK3N0YXRpYyBM
YXlvdXRTaXplIHNpemUoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBJbWFnZVNpemVU
eXBlIHNpemVUeXBlID0gSW1hZ2VTaXplQmVmb3JlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICBM
YXlvdXRTaXplIHNpemU7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
RWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CkBAIC0xMzMwLDYgKzEzMzAsMTEgQEAgc3RhdGljIExh
eW91dFNpemUgc2l6ZShIVE1MSW1hZ2VFbGVtZW50JgogICAgIHJldHVybiBzaXplOwogfQogCitz
dGF0aWMgRmxvYXRTaXplIHNpemUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCit7
CisgICAgcmV0dXJuIEZsb2F0U2l6ZShjYW52YXNFbGVtZW50LnNpemUoKSk7Cit9CisKICNpZiBF
TkFCTEUoVklERU8pCiBzdGF0aWMgRmxvYXRTaXplIHNpemUoSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW8pCiB7CkBAIC0xMzQ3LDIxICsxMzUyLDM4IEBAIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IG5v
cm1hbGl6ZVJlY3QoY28KICAgICAgICAgc3RkOjptYXgocmVjdC5oZWlnaHQoKSwgLXJlY3QuaGVp
Z2h0KCkpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9hdCB4LCBmbG9h
dCB5KQorRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoQ2FudmFzSW1hZ2VTb3VyY2UmJiBpbWFnZSwgZmxvYXQgZHgsIGZsb2F0IGR5KQogewotICAg
IExheW91dFNpemUgZGVzdFJlY3RTaXplID0gc2l6ZShpbWFnZUVsZW1lbnQsIEltYWdlU2l6ZUFm
dGVyRGV2aWNlUGl4ZWxSYXRpbyk7Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZUVsZW1lbnQs
IHgsIHksIGRlc3RSZWN0U2l6ZS53aWR0aCgpLCBkZXN0UmVjdFNpemUuaGVpZ2h0KCkpOworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGltYWdlLAorICAgICAgICBbJl0gKFJlZlB0cjxIVE1MSW1h
Z2VFbGVtZW50PiYgaW1hZ2VFbGVtZW50KSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgICAg
ICAgICBMYXlvdXRTaXplIGRlc3RSZWN0U2l6ZSA9IHNpemUoKmltYWdlRWxlbWVudCwgSW1hZ2VT
aXplQWZ0ZXJEZXZpY2VQaXhlbFJhdGlvKTsKKyAgICAgICAgICAgIExheW91dFNpemUgc291cmNl
UmVjdFNpemUgPSBzaXplKCppbWFnZUVsZW1lbnQsIEltYWdlU2l6ZUJlZm9yZURldmljZVBpeGVs
UmF0aW8pOworICAgICAgICAgICAgcmV0dXJuIGRyYXdJbWFnZSgqaW1hZ2VFbGVtZW50LCBGbG9h
dFJlY3QgeyAwLCAwLCBzb3VyY2VSZWN0U2l6ZS53aWR0aCgpLCBzb3VyY2VSZWN0U2l6ZS5oZWln
aHQoKSB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGRlc3RSZWN0U2l6ZS53aWR0aCgpLCBkZXN0UmVj
dFNpemUuaGVpZ2h0KCkgfSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoYXV0byYgZWxlbWVu
dCkgLT4gRXhjZXB0aW9uT3I8dm9pZD4geworICAgICAgICAgICAgRmxvYXRTaXplIGVsZW1lbnRT
aXplID0gc2l6ZSgqZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gZHJhd0ltYWdlKCplbGVt
ZW50LCBGbG9hdFJlY3QgeyAwLCAwLCBlbGVtZW50U2l6ZS53aWR0aCgpLCBlbGVtZW50U2l6ZS5o
ZWlnaHQoKSB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGVsZW1lbnRTaXplLndpZHRoKCksIGVsZW1l
bnRTaXplLmhlaWdodCgpIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVu
dCYgaW1hZ2VFbGVtZW50LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KQorRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoQ2FudmFzSW1hZ2VTb3VyY2UmJiBpbWFnZSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBk
dywgZmxvYXQgZGgpCiB7Ci0gICAgTGF5b3V0U2l6ZSBzb3VyY2VSZWN0U2l6ZSA9IHNpemUoaW1h
Z2VFbGVtZW50LCBJbWFnZVNpemVCZWZvcmVEZXZpY2VQaXhlbFJhdGlvKTsKLSAgICByZXR1cm4g
ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgMCwgMCwgc291cmNlUmVjdFNpemUu
d2lkdGgoKSwgc291cmNlUmVjdFNpemUuaGVpZ2h0KCkgfSwgRmxvYXRSZWN0IHsgeCwgeSwgd2lk
dGgsIGhlaWdodCB9KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpbWFnZSwKKyAgICAgICAg
WyZdIChhdXRvJiBlbGVtZW50KSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgICAgICAgICBG
bG9hdFNpemUgZWxlbWVudFNpemUgPSBzaXplKCplbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVy
biBkcmF3SW1hZ2UoKmVsZW1lbnQsIEZsb2F0UmVjdCB7IDAsIDAsIGVsZW1lbnRTaXplLndpZHRo
KCksIGVsZW1lbnRTaXplLmhlaWdodCgpIH0sIEZsb2F0UmVjdCB7IGR4LCBkeSwgZHcsIGRoIH0p
OworICAgICAgICB9CisgICAgKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBm
bG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkdywgZmxvYXQgZGgpCitFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSYmIGltYWdlLCBmbG9hdCBzeCwg
ZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBk
dywgZmxvYXQgZGgpCiB7Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIEZsb2F0
UmVjdCB7IHN4LCBzeSwgc3csIHNoIH0sIEZsb2F0UmVjdCB7IGR4LCBkeSwgZHcsIGRoIH0pOwor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGltYWdlLAorICAgICAgICBbJl0gKGF1dG8mIGVsZW1l
bnQpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKKyAgICAgICAgICAgIHJldHVybiBkcmF3SW1hZ2Uo
KmVsZW1lbnQsIEZsb2F0UmVjdCB7IHN4LCBzeSwgc3csIHNoIH0sIEZsb2F0UmVjdCB7IGR4LCBk
eSwgZHcsIGRoIH0pOworICAgICAgICB9CisgICAgKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCkKQEAgLTE0NDYsMjEgKzE0NjgsNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJj
ZUNhbnZhcywgZmxvYXQgeCwgZmxvYXQgeSkKLXsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHNvdXJj
ZUNhbnZhcywgMCwgMCwgc291cmNlQ2FudmFzLndpZHRoKCksIHNvdXJjZUNhbnZhcy5oZWlnaHQo
KSwgeCwgeSwgc291cmNlQ2FudmFzLndpZHRoKCksIHNvdXJjZUNhbnZhcy5oZWlnaHQoKSk7Ci19
Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdl
KEhUTUxDYW52YXNFbGVtZW50JiBzb3VyY2VDYW52YXMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShzb3VyY2VDYW52
YXMsIEZsb2F0UmVjdCgwLCAwLCBzb3VyY2VDYW52YXMud2lkdGgoKSwgc291cmNlQ2FudmFzLmhl
aWdodCgpKSwgRmxvYXRSZWN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9KTsKLX0KLQotRXhjZXB0
aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZh
c0VsZW1lbnQmIHNvdXJjZUNhbnZhcywgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxv
YXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKQotewotICAgIHJl
dHVybiBkcmF3SW1hZ2Uoc291cmNlQ2FudmFzLCBGbG9hdFJlY3Qoc3gsIHN5LCBzdywgc2gpLCBG
bG9hdFJlY3QoZHgsIGR5LCBkdywgZGgpKTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdXJjZUNh
bnZhcywgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qp
CiB7CiAgICAgRmxvYXRSZWN0IHNyY0NhbnZhc1JlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBzb3VyY2VDYW52YXMuc2l6ZSgpKTsKQEAgLTE1MTgsMjMgKzE1MjUsNiBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQmIHZpZGVvLCBmbG9hdCB4LCBmbG9hdCB5KQotewotICAgIEZsb2F0U2l6ZSB2
aWRlb1NpemUgPSBzaXplKHZpZGVvKTsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHZpZGVvLCB4LCB5
LCB2aWRlb1NpemUud2lkdGgoKSwgdmlkZW9TaXplLmhlaWdodCgpKTsKLX0KLQotRXhjZXB0aW9u
T3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxl
bWVudCYgdmlkZW8sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
Ci17Ci0gICAgRmxvYXRTaXplIHZpZGVvU2l6ZSA9IHNpemUodmlkZW8pOwotICAgIHJldHVybiBk
cmF3SW1hZ2UodmlkZW8sIEZsb2F0UmVjdCB7IDAsIDAsIHZpZGVvU2l6ZS53aWR0aCgpLCB2aWRl
b1NpemUuaGVpZ2h0KCkgfSwgRmxvYXRSZWN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9KTsKLX0K
LQotRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2Uo
SFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZs
b2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCkKLXsKLSAgICBy
ZXR1cm4gZHJhd0ltYWdlKHZpZGVvLCBGbG9hdFJlY3QgeyBzeCwgc3ksIHN3LCBzaCB9LCBGbG9h
dFJlY3QgeyBkeCwgZHksIGR3LCBkaCB9KTsKLX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewogICAg
IGlmICh2aWRlby5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5H
IHx8IHZpZGVvLnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX01FVEFEQVRB
KQpAQCAtMTc0OCwxMiArMTczOCwxOSBAQCBFeGNlcHRpb25PcjxSZWY8Q2FudmFzR3JhZGllbnQ+
PiBDYW52YXNSCiAgICAgcmV0dXJuIFdURk1vdmUoZ3JhZGllbnQpOwogfQogCi1FeGNlcHRpb25P
cjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRl
UGF0dGVybihIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVw
ZXRpdGlvblR5cGUpCitFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmIGltYWdl
LCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb24pCiB7CiAgICAgYm9vbCByZXBlYXRYLCByZXBlYXRZ
OwotICAgIGlmICghQ2FudmFzUGF0dGVybjo6cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9u
VHlwZSwgcmVwZWF0WCwgcmVwZWF0WSkpCisgICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJl
cGV0aXRpb25UeXBlKHJlcGV0aXRpb24sIHJlcGVhdFgsIHJlcGVhdFkpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
aW1hZ2UsCisgICAgICAgIFsmXShhdXRvJiBlbGVtZW50KSAtPiBFeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IHsgcmV0dXJuIGNyZWF0ZVBhdHRlcm4oKmVsZW1lbnQsIHJlcGVhdFgs
IHJlcGVhdFkpOyB9CisgICAgKTsKK30KKworRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRl
cm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRNTEltYWdlRWxl
bWVudCYgaW1hZ2VFbGVtZW50LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKK3sKICAgICBh
dXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpOwogCiAgICAgLy8g
SWYgdGhlIGltYWdlIGxvYWRpbmcgaGFzbid0IHN0YXJ0ZWQgb3IgdGhlIGltYWdlIGlzIG5vdCBj
b21wbGV0ZSwgaXQgaXMgbm90IGZ1bGx5IGRlY29kYWJsZS4KQEAgLTE3NzcsMjkgKzE3NzQsMjEg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YQogICAgIHJldHVybiBS
ZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5kZXJlcigpKSwgcmVwZWF0WCwgcmVw
ZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxDYW52YXNQYXR0ZXJu
Pj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvblR5cGUpCitFeGNlcHRpb25PcjxS
ZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0
dGVybihIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKIHsKICAgICBpZiAoIWNhbnZhcy53aWR0aCgpIHx8ICFjYW52YXMuaGVpZ2h0KCkgfHwgIWNh
bnZhcy5idWZmZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVf
RVJSIH07CiAKLSAgICBib29sIHJlcGVhdFgsIHJlcGVhdFk7Ci0gICAgaWYgKCFDYW52YXNQYXR0
ZXJuOjpwYXJzZVJlcGV0aXRpb25UeXBlKHJlcGV0aXRpb25UeXBlLCByZXBlYXRYLCByZXBlYXRZ
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKLQotICAgIHJldHVy
biBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNhbnZhcy5jb3BpZWRJbWFnZSgpLCByZXBlYXRYLCBy
ZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSk7CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgqY2FudmFzLmNvcGllZEltYWdlKCksIHJl
cGVhdFgsIHJlcGVhdFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAgIAogI2lmIEVO
QUJMRShWSURFTykKIAotRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9F
bGVtZW50LCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlKQorRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4o
SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKIHsKICAgICBpZiAodmlkZW9FbGVtZW50LnJlYWR5U3RhdGUoKSA8IEhUTUxNZWRpYUVsZW1l
bnQ6OkhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAg
ICBib29sIHJlcGVhdFgsIHJlcGVhdFk7Ci0gICAgaWYgKCFDYW52YXNQYXR0ZXJuOjpwYXJzZVJl
cGV0aXRpb25UeXBlKHJlcGV0aXRpb25UeXBlLCByZXBlYXRYLCByZXBlYXRZKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKLQogICAgIGNoZWNrT3JpZ2luKCZ2aWRl
b0VsZW1lbnQpOwogICAgIGJvb2wgb3JpZ2luQ2xlYW4gPSBjYW52YXMoKS5vcmlnaW5DbGVhbigp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gMjA4OTk5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDEyIEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZURhdGE7
CiBjbGFzcyBUZXh0TWV0cmljczsKIAorI2lmIEVOQUJMRShWSURFTykKK3VzaW5nIENhbnZhc0lt
YWdlU291cmNlID0gVmFyaWFudDxSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sIFJlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50Pj47CisjZWxzZQordXNpbmcg
Q2FudmFzSW1hZ2VTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiwgUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50Pj47CisjZW5kaWYKKwogY2xhc3MgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBD
YW52YXNQYXRoIHsKIHB1YmxpYzoKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENh
bnZhc0VsZW1lbnQmLCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlLCBib29sIHVz
ZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7CkBAIC0xNTYsMjEgKzE2Miw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRy
YXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3
SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZs
b2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCk7Ci0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgZmxvYXQgc3gsIGZsb2F0IHN5LCBm
bG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRo
KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7Ci0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29tcG9zaXRl
T3BlcmF0b3ImLCBjb25zdCBCbGVuZE1vZGUmKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmLCBmbG9hdCB4LCBmbG9h
dCB5KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYs
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiwgZmxvYXQgc3gsIGZsb2F0
IHN5LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZs
b2F0IGRoKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsK
LSNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJj
ZSYmLCBmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFn
ZShDYW52YXNJbWFnZVNvdXJjZSYmLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9h
dCBkaCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNl
JiYsIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxv
YXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCk7CiAKICAgICB2b2lkIGRyYXdJbWFnZUZyb21SZWN0
KEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBzeCA9IDAsIGZsb2F0IHN5ID0gMCwgZmxvYXQgc3cg
PSAwLCBmbG9hdCBzaCA9IDAsIGZsb2F0IGR4ID0gMCwgZmxvYXQgZHkgPSAwLCBmbG9hdCBkdyA9
IDAsIGZsb2F0IGRoID0gMCwgY29uc3QgU3RyaW5nJiBjb21wb3NpdGVPcGVyYXRpb24gPSBlbXB0
eVN0cmluZygpKTsKIApAQCAtMTgwLDExICsxNzQsNyBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRp
b25PcjxSZWY8Q2FudmFzR3JhZGllbnQ+PiBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwg
ZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPENhbnZh
c0dyYWRpZW50Pj4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9h
dCByMCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
UHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQmLCBjb25z
dCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8Q2FudmFzUGF0
dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJl
cGV0aXRpb25UeXBlKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxWaWRlb0VsZW1lbnQmLCBjb25zdCBT
dHJpbmcmIHJlcGV0aXRpb25UeXBlKTsKLSNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
YW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBT
dHJpbmcmIHJlcGV0aXRpb24pOwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+
IGNyZWF0ZUltYWdlRGF0YShJbWFnZURhdGEqKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxSZWZQ
dHI8SW1hZ2VEYXRhPj4gY3JlYXRlSW1hZ2VEYXRhKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
IGNvbnN0OwpAQCAtMzMxLDYgKzMyMSwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlTdHJv
a2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAKKyAgICBFeGNlcHRp
b25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTEltYWdlRWxlbWVu
dCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihIVE1MVmlkZW9FbGVtZW50Jiwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworI2VuZGlmCisKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3
SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb21wb3NpdGVPcGVyYXRvciYsIGNvbnN0IEJsZW5k
TW9kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVu
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsK
KyNpZiBFTkFCTEUoVklERU8pCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCk7CisjZW5kaWYKKwogICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgLy8gVGhlIHJlbGF0aW9uc2hpcCBi
ZXR3ZWVuIEZvbnRDYXNjYWRlIGFuZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkZvbnRQcm94
eSBtdXN0IGhvbGQgY2VydGFpbiBpbnZhcmlhbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCShyZXZp
c2lvbiAyMDg5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiwxMyBAQAogZW51bSBJbWFn
ZVNtb290aGluZ1F1YWxpdHkgeyAibG93IiwgIm1lZGl1bSIsICJoaWdoIiB9OwogZW51bSBDYW52
YXNXaW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZW5vZGQiIH07CiAKKy8vIEZJWE1FOiBUaGlz
IHNob3VsZCBpbmNsdWRlIFNWR0ltYWdlRWxlbWVudCBhbmQgSW1hZ2VCaXRtYXAuCisjaWYgZGVm
aW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJMRV9WSURFTwordHlwZWRlZiAoSFRNTEltYWdlRWxl
bWVudCBvciBIVE1MVmlkZW9FbGVtZW50IG9yIEhUTUxDYW52YXNFbGVtZW50KSBDYW52YXNJbWFn
ZVNvdXJjZTsKKyNlbHNlCit0eXBlZGVmIChIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNF
bGVtZW50KSBDYW52YXNJbWFnZVNvdXJjZTsKKyNlbmRpZgorCiBbCiAgICAgQ3VzdG9tSXNSZWFj
aGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkBAIC01Myw5ICs2MCw2IEBAIGVudW0g
Q2FudmFzV2luZGluZ1J1bGUgeyAibm9uemVybyIsICJldmUKIAogICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uOwogCi0gICAgW01heVRocm93RXhjZXB0aW9u
XSBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAs
IGZsb2F0IHgxLCBmbG9hdCB5MSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFk
aWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBm
bG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKLQogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgbGluZVdpZHRoOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGluZUNhcDsKICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxpbmVKb2luOwpAQCAtMTMyLDE1ICsxMzYsMTIgQEAgZW51
bSBDYW52YXNXaW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZQogCiAgICAgdm9pZCBzdHJva2VS
ZWN0KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmlj
dGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsKIAotICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgdW5y
ZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIHVucmVzdHJp
Y3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHdp
ZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9h
dCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3csIHVucmVz
dHJpY3RlZCBmbG9hdCBzaCwgdW5yZXN0cmljdGVkIGZsb2F0IGR4LCB1bnJlc3RyaWN0ZWQgZmxv
YXQgZHksIHVucmVzdHJpY3RlZCBmbG9hdCBkdywgdW5yZXN0cmljdGVkIGZsb2F0IGRoKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50IGNh
bnZhcywgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKLSAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50IGNhbnZh
cywgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOwotICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzLCB1bnJl
c3RyaWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJpY3RlZCBmbG9hdCBzeSwgdW5yZXN0cmljdGVkIGZs
b2F0IHN3LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2gsIHVucmVzdHJpY3RlZCBmbG9hdCBkeCwgdW5y
ZXN0cmljdGVkIGZsb2F0IGR5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHcsIHVucmVzdHJpY3RlZCBm
bG9hdCBkaCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgdW5yZXN0cmljdGVkIGZsb2F0IHgs
IHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50IHZpZGVvLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3
aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVP
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCB2aWRl
bywgdW5yZXN0cmljdGVkIGZsb2F0IHN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ksIHVucmVzdHJp
Y3RlZCBmbG9hdCBzdywgdW5yZXN0cmljdGVkIGZsb2F0IHNoLCB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZHgsIHVucmVzdHJpY3RlZCBmbG9hdCBkeSwgdW5yZXN0cmljdGVkIGZsb2F0IGR3LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgZGgpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBtb3ZlIHRvIHRoZSBD
YW52YXNEcmF3SW1hZ2UgaW50ZXJmYWNlLgorICAgIC8vIEZJWE1FOiBBbGwgdGhlIHVucmVzdHJp
Y3RlZCBmbG9hdCBhcmd1bWVudHMgYmVsb3cgc2hvdWxkIGJlIHVucmVzdHJpY3RlZCBkb3VibGVz
LgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3Vy
Y2UgaW1hZ2UsIHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSBp
bWFnZSwgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2UsIHVu
cmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc3csIHVucmVzdHJpY3RlZCBmbG9hdCBzaCwgdW5yZXN0cmljdGVkIGZsb2F0IGR4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgZHksIHVucmVzdHJpY3RlZCBmbG9hdCBkdywgdW5yZXN0cmljdGVk
IGZsb2F0IGRoKTsKKwogCiAgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdChIVE1MSW1hZ2VFbGVt
ZW50IGltYWdlLAogICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ggPSAwLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3kgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc3cgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2ggPSAwLApAQCAtMTYy
LDE0ICsxNjMsMTQgQEAgZW51bSBDYW52YXNXaW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZQog
ICAgIHZvaWQgd2Via2l0UHV0SW1hZ2VEYXRhSEQoSW1hZ2VEYXRhIGltYWdlZGF0YSwgZmxvYXQg
ZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHdlYmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBp
bWFnZWRhdGEsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBkaXJ0eVks
IGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRpcnR5SGVpZ2h0KTsKIAotICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gQ2FudmFzUGF0dGVybiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50IGNh
bnZhcywgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcmVwZXRpdGlvblR5cGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybiBjcmVhdGVQYXR0ZXJuKEhU
TUxJbWFnZUVsZW1lbnQgaW1hZ2UsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5n
IHJlcGV0aXRpb25UeXBlKTsKLSAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0
aW9uXSBDYW52YXNQYXR0ZXJuPyBjcmVhdGVQYXR0ZXJuKEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8s
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKTsKICAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRh
PyBpbWFnZWRhdGEpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gSW1hZ2VEYXRhIGNyZWF0ZUlt
YWdlRGF0YShmbG9hdCBzdywgZmxvYXQgc2gpOwogCiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGN1
c3RvbSBzdHJva2VTdHlsZTsKICAgICBbQ3VzdG9tXSBhdHRyaWJ1dGUgY3VzdG9tIGZpbGxTdHls
ZTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZUxpbmVhckdy
YWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIENhbnZhc0dyYWRpZW50IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0
IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihDYW52
YXNJbWFnZVNvdXJjZSBpbWFnZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
cmVwZXRpdGlvbik7CiAKICAgICAvLyBwaXhlbCBtYW5pcHVsYXRpb24KICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9h
dCBzdywgZmxvYXQgc2gpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295539</attachid>
            <date>2016-11-28 15:28:38 -0800</date>
            <delta_ts>2016-11-28 15:42:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165086-20161128152814.patch</filename>
            <type>text/plain</type>
            <size>20133</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTExLTI3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgdXNlIFdlYklETCB1bmlvbnMgLyBWYXJpYW50cyBmb3IgY3JlYXRlUGF0dGVybiBhbmQg
ZHJhd0ltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaXplKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBvZiBzaXplIGZvciBlYWNoIHR5
cGUgb2YgQ2FudmFzU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsOgorICAgICAgICBVc2UgdmFyaWFudHMgdG8gcmVkdWNlIGNvZGUgZHVwbGlj
YXRpb24gYW5kIG1hdGNoIHNwZWMgbGFuZ3VhZ2UgaW4gZHJhd0ltYWdlIGFuZCBjcmVhdGVQYXR0
ZXJuLgorCiAyMDE2LTExLTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBtb3JlIG1p
c2NlbGxhbmVvdXMgZmlsZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwOTAzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMTgsNyArMTMxOCw3IEBAIGVudW0gSW1hZ2VTaXplVHlw
ZSB7CiAgICAgSW1hZ2VTaXplQmVmb3JlRGV2aWNlUGl4ZWxSYXRpbwogfTsKIAotc3RhdGljIExh
eW91dFNpemUgc2l6ZShIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQsIEltYWdlU2l6ZVR5
cGUgc2l6ZVR5cGUpCitzdGF0aWMgTGF5b3V0U2l6ZSBzaXplKEhUTUxJbWFnZUVsZW1lbnQmIGlt
YWdlRWxlbWVudCwgSW1hZ2VTaXplVHlwZSBzaXplVHlwZSA9IEltYWdlU2l6ZUJlZm9yZURldmlj
ZVBpeGVsUmF0aW8pCiB7CiAgICAgTGF5b3V0U2l6ZSBzaXplOwogICAgIGlmIChDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewpAQCAtMTMzMCw2
ICsxMzMwLDExIEBAIHN0YXRpYyBMYXlvdXRTaXplIHNpemUoSFRNTEltYWdlRWxlbWVudCYKICAg
ICByZXR1cm4gc2l6ZTsKIH0KIAorc3RhdGljIEZsb2F0U2l6ZSBzaXplKEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXNFbGVtZW50KQoreworICAgIHJldHVybiBGbG9hdFNpemUoY2FudmFzRWxlbWVu
dC5zaXplKCkpOworfQorCiAjaWYgRU5BQkxFKFZJREVPKQogc3RhdGljIEZsb2F0U2l6ZSBzaXpl
KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvKQogewpAQCAtMTM0NywyMSArMTM1MiwzOCBAQCBzdGF0
aWMgaW5saW5lIEZsb2F0UmVjdCBub3JtYWxpemVSZWN0KGNvCiAgICAgICAgIHN0ZDo6bWF4KHJl
Y3QuaGVpZ2h0KCksIC1yZWN0LmhlaWdodCgpKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmIGltYWdl
RWxlbWVudCwgZmxvYXQgeCwgZmxvYXQgeSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlJiYgaW1hZ2UsIGZsb2F0
IGR4LCBmbG9hdCBkeSkKIHsKLSAgICBMYXlvdXRTaXplIGRlc3RSZWN0U2l6ZSA9IHNpemUoaW1h
Z2VFbGVtZW50LCBJbWFnZVNpemVBZnRlckRldmljZVBpeGVsUmF0aW8pOwotICAgIHJldHVybiBk
cmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCB4LCB5LCBkZXN0UmVjdFNpemUud2lkdGgoKSwgZGVzdFJl
Y3RTaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpbWFnZSwKKyAgICAg
ICAgWyZdIChSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCkgLT4gRXhjZXB0
aW9uT3I8dm9pZD4geworICAgICAgICAgICAgTGF5b3V0U2l6ZSBkZXN0UmVjdFNpemUgPSBzaXpl
KCppbWFnZUVsZW1lbnQsIEltYWdlU2l6ZUFmdGVyRGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgICAg
ICAgICBMYXlvdXRTaXplIHNvdXJjZVJlY3RTaXplID0gc2l6ZSgqaW1hZ2VFbGVtZW50LCBJbWFn
ZVNpemVCZWZvcmVEZXZpY2VQaXhlbFJhdGlvKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5k
cmF3SW1hZ2UoKmltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgMCwgMCwgc291cmNlUmVjdFNpemUu
d2lkdGgoKSwgc291cmNlUmVjdFNpemUuaGVpZ2h0KCkgfSwgRmxvYXRSZWN0IHsgZHgsIGR5LCBk
ZXN0UmVjdFNpemUud2lkdGgoKSwgZGVzdFJlY3RTaXplLmhlaWdodCgpIH0pOworICAgICAgICB9
LAorICAgICAgICBbJl0gKGF1dG8mIGVsZW1lbnQpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKKyAg
ICAgICAgICAgIEZsb2F0U2l6ZSBlbGVtZW50U2l6ZSA9IHNpemUoKmVsZW1lbnQpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMtPmRyYXdJbWFnZSgqZWxlbWVudCwgRmxvYXRSZWN0IHsgMCwgMCwg
ZWxlbWVudFNpemUud2lkdGgoKSwgZWxlbWVudFNpemUuaGVpZ2h0KCkgfSwgRmxvYXRSZWN0IHsg
ZHgsIGR5LCBlbGVtZW50U2l6ZS53aWR0aCgpLCBlbGVtZW50U2l6ZS5oZWlnaHQoKSB9KTsKKyAg
ICAgICAgfQorICAgICk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCwgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlJiYg
aW1hZ2UsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKQogewotICAgIExh
eW91dFNpemUgc291cmNlUmVjdFNpemUgPSBzaXplKGltYWdlRWxlbWVudCwgSW1hZ2VTaXplQmVm
b3JlRGV2aWNlUGl4ZWxSYXRpbyk7Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZUVsZW1lbnQs
IEZsb2F0UmVjdCB7IDAsIDAsIHNvdXJjZVJlY3RTaXplLndpZHRoKCksIHNvdXJjZVJlY3RTaXpl
LmhlaWdodCgpIH0sIEZsb2F0UmVjdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSk7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaW1hZ2UsCisgICAgICAgIFsmXSAoYXV0byYgZWxlbWVudCkgLT4g
RXhjZXB0aW9uT3I8dm9pZD4geworICAgICAgICAgICAgRmxvYXRTaXplIGVsZW1lbnRTaXplID0g
c2l6ZSgqZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy0+ZHJhd0ltYWdlKCplbGVt
ZW50LCBGbG9hdFJlY3QgeyAwLCAwLCBlbGVtZW50U2l6ZS53aWR0aCgpLCBlbGVtZW50U2l6ZS5o
ZWlnaHQoKSB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGR3LCBkaCB9KTsKKyAgICAgICAgfQorICAg
ICk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCwgZmxvYXQgc3gsIGZsb2F0IHN5
LCBmbG9hdCBzdywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0
IGRoKQorRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoQ2FudmFzSW1hZ2VTb3VyY2UmJiBpbWFnZSwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBz
dywgZmxvYXQgc2gsIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZHcsIGZsb2F0IGRoKQogewot
ICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCBGbG9hdFJlY3QgeyBzeCwgc3ksIHN3
LCBzaCB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGR3LCBkaCB9KTsKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpbWFnZSwKKyAgICAgICAgWyZdIChhdXRvJiBlbGVtZW50KSAtPiBFeGNlcHRpb25P
cjx2b2lkPiB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy0+ZHJhd0ltYWdlKCplbGVtZW50LCBG
bG9hdFJlY3QgeyBzeCwgc3ksIHN3LCBzaCB9LCBGbG9hdFJlY3QgeyBkeCwgZHksIGR3LCBkaCB9
KTsKKyAgICAgICAgfQorICAgICk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCkBAIC0x
NDQ2LDIxICsxNDY4LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dAogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3VyY2VDYW52YXMsIGZs
b2F0IHgsIGZsb2F0IHkpCi17Ci0gICAgcmV0dXJuIGRyYXdJbWFnZShzb3VyY2VDYW52YXMsIDAs
IDAsIHNvdXJjZUNhbnZhcy53aWR0aCgpLCBzb3VyY2VDYW52YXMuaGVpZ2h0KCksIHgsIHksIHNv
dXJjZUNhbnZhcy53aWR0aCgpLCBzb3VyY2VDYW52YXMuaGVpZ2h0KCkpOwotfQotCi1FeGNlcHRp
b25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFz
RWxlbWVudCYgc291cmNlQ2FudmFzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0KQotewotICAgIHJldHVybiBkcmF3SW1hZ2Uoc291cmNlQ2FudmFzLCBGbG9hdFJl
Y3QoMCwgMCwgc291cmNlQ2FudmFzLndpZHRoKCksIHNvdXJjZUNhbnZhcy5oZWlnaHQoKSksIEZs
b2F0UmVjdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3VyY2VDYW52YXMsIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9h
dCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCkKLXsKLSAgICByZXR1cm4gZHJhd0lt
YWdlKHNvdXJjZUNhbnZhcywgRmxvYXRSZWN0KHN4LCBzeSwgc3csIHNoKSwgRmxvYXRSZWN0KGR4
LCBkeSwgZHcsIGRoKSk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3VyY2VDYW52YXMsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewogICAgIEZs
b2F0UmVjdCBzcmNDYW52YXNSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc291cmNlQ2Fu
dmFzLnNpemUoKSk7CkBAIC0xNTE4LDIzICsxNTI1LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50
JiB2aWRlbywgZmxvYXQgeCwgZmxvYXQgeSkKLXsKLSAgICBGbG9hdFNpemUgdmlkZW9TaXplID0g
c2l6ZSh2aWRlbyk7Ci0gICAgcmV0dXJuIGRyYXdJbWFnZSh2aWRlbywgeCwgeSwgdmlkZW9TaXpl
LndpZHRoKCksIHZpZGVvU2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVv
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotewotICAgIEZs
b2F0U2l6ZSB2aWRlb1NpemUgPSBzaXplKHZpZGVvKTsKLSAgICByZXR1cm4gZHJhd0ltYWdlKHZp
ZGVvLCBGbG9hdFJlY3QgeyAwLCAwLCB2aWRlb1NpemUud2lkdGgoKSwgdmlkZW9TaXplLmhlaWdo
dCgpIH0sIEZsb2F0UmVjdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0Vs
ZW1lbnQmIHZpZGVvLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxv
YXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpCi17Ci0gICAgcmV0dXJuIGRyYXdJ
bWFnZSh2aWRlbywgRmxvYXRSZWN0IHsgc3gsIHN5LCBzdywgc2ggfSwgRmxvYXRSZWN0IHsgZHgs
IGR5LCBkdywgZGggfSk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKICAgICBpZiAodmlkZW8u
cmVhZHlTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfTk9USElORyB8fCB2aWRlby5y
ZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRBREFUQSkKQEAgLTE3NDgs
MTIgKzE3MzgsMTkgQEAgRXhjZXB0aW9uT3I8UmVmPENhbnZhc0dyYWRpZW50Pj4gQ2FudmFzUgog
ICAgIHJldHVybiBXVEZNb3ZlKGdyYWRpZW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRyPENh
bnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRN
TEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBl
KQorRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UmJiBpbWFnZSwgY29uc3QgU3Ry
aW5nJiByZXBldGl0aW9uKQogewogICAgIGJvb2wgcmVwZWF0WCwgcmVwZWF0WTsKLSAgICBpZiAo
IUNhbnZhc1BhdHRlcm46OnBhcnNlUmVwZXRpdGlvblR5cGUocmVwZXRpdGlvblR5cGUsIHJlcGVh
dFgsIHJlcGVhdFkpKQorICAgIGlmICghQ2FudmFzUGF0dGVybjo6cGFyc2VSZXBldGl0aW9uVHlw
ZShyZXBldGl0aW9uLCByZXBlYXRYLCByZXBlYXRZKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNZTlRBWF9FUlIgfTsKIAorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGltYWdlLAorICAg
ICAgICBbJl0oYXV0byYgZWxlbWVudCkgLT4gRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRl
cm4+PiB7IHJldHVybiB0aGlzLT5jcmVhdGVQYXR0ZXJuKCplbGVtZW50LCByZXBlYXRYLCByZXBl
YXRZKTsgfQorICAgICk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQm
IGltYWdlRWxlbWVudCwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCit7CiAgICAgYXV0byog
Y2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKTsKIAogICAgIC8vIElmIHRo
ZSBpbWFnZSBsb2FkaW5nIGhhc24ndCBzdGFydGVkIG9yIHRoZSBpbWFnZSBpcyBub3QgY29tcGxl
dGUsIGl0IGlzIG5vdCBmdWxseSBkZWNvZGFibGUuCkBAIC0xNzc3LDI5ICsxNzc0LDIxIEBAIEV4
Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmEKICAgICByZXR1cm4gUmVmUHRy
PENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSksIHJlcGVhdFgsIHJlcGVhdFks
IG9yaWdpbkNsZWFuKSB9OwogfQogCi1FeGNlcHRpb25PcjxSZWY8Q2FudmFzUGF0dGVybj4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCYg
Y2FudmFzLCBjb25zdCBTdHJpbmcmIHJlcGV0aXRpb25UeXBlKQorRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4o
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7
CiAgICAgaWYgKCFjYW52YXMud2lkdGgoKSB8fCAhY2FudmFzLmhlaWdodCgpIHx8ICFjYW52YXMu
YnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9
OwogCi0gICAgYm9vbCByZXBlYXRYLCByZXBlYXRZOwotICAgIGlmICghQ2FudmFzUGF0dGVybjo6
cGFyc2VSZXBldGl0aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVwZWF0WCwgcmVwZWF0WSkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07Ci0KLSAgICByZXR1cm4gQ2Fu
dmFzUGF0dGVybjo6Y3JlYXRlKCpjYW52YXMuY29waWVkSW1hZ2UoKSwgcmVwZWF0WCwgcmVwZWF0
WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpOworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNhbnZhcy5jb3BpZWRJbWFnZSgpLCByZXBlYXRY
LCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFCTEUo
VklERU8pCiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVu
dCwgY29uc3QgU3RyaW5nJiByZXBldGl0aW9uVHlwZSkKK0V4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhUTUxW
aWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7
CiAgICAgaWYgKHZpZGVvRWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVkaWFFbGVtZW50OjpI
QVZFX0NVUlJFTlRfREFUQSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYm9v
bCByZXBlYXRYLCByZXBlYXRZOwotICAgIGlmICghQ2FudmFzUGF0dGVybjo6cGFyc2VSZXBldGl0
aW9uVHlwZShyZXBldGl0aW9uVHlwZSwgcmVwZWF0WCwgcmVwZWF0WSkpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07Ci0KICAgICBjaGVja09yaWdpbigmdmlkZW9FbGVt
ZW50KTsKICAgICBib29sIG9yaWdpbkNsZWFuID0gY2FudmFzKCkub3JpZ2luQ2xlYW4oKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDIwOTAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2
ICs1NSwxMiBAQCBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VEYXRhOwogY2xh
c3MgVGV4dE1ldHJpY3M7CiAKKyNpZiBFTkFCTEUoVklERU8pCit1c2luZyBDYW52YXNJbWFnZVNv
dXJjZSA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+LCBSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4sIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4+OworI2Vsc2UKK3VzaW5nIENhbnZh
c0ltYWdlU291cmNlID0gVmFyaWFudDxSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sIFJlZlB0cjxI
VE1MQ2FudmFzRWxlbWVudD4+OworI2VuZGlmCisKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQ2FudmFz
UGF0aCB7CiBwdWJsaWM6CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNF
bGVtZW50JiwgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSwgYm9vbCB1c2VzRGFz
aGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwpAQCAtMTU2LDIxICsxNjIsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1h
Z2UoSFRNTEltYWdlRWxlbWVudCYsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdl
KEhUTUxJbWFnZUVsZW1lbnQmLCBmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBz
aCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgpOwotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCYsIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCYsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCYsIGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQg
c3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBkaCk7Ci0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbXBvc2l0ZU9wZXJh
dG9yJiwgY29uc3QgQmxlbmRNb2RlJik7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiwgZmxvYXQgeCwgZmxvYXQgeSk7
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAgICBFeGNlcHRpb25P
cjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYsIGZsb2F0IHN4LCBmbG9hdCBzeSwg
ZmxvYXQgc3csIGZsb2F0IHNoLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGR3LCBmbG9hdCBk
aCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7Ci0jZW5k
aWYKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UmJiwg
ZmxvYXQgZHgsIGZsb2F0IGR5KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoQ2Fu
dmFzSW1hZ2VTb3VyY2UmJiwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywgZmxvYXQgZGgp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShDYW52YXNJbWFnZVNvdXJjZSYmLCBm
bG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkdywgZmxvYXQgZGgpOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdChIVE1M
SW1hZ2VFbGVtZW50JiwgZmxvYXQgc3ggPSAwLCBmbG9hdCBzeSA9IDAsIGZsb2F0IHN3ID0gMCwg
ZmxvYXQgc2ggPSAwLCBmbG9hdCBkeCA9IDAsIGZsb2F0IGR5ID0gMCwgZmxvYXQgZHcgPSAwLCBm
bG9hdCBkaCA9IDAsIGNvbnN0IFN0cmluZyYgY29tcG9zaXRlT3BlcmF0aW9uID0gZW1wdHlTdHJp
bmcoKSk7CiAKQEAgLTE4MCwxMSArMTc0LDcgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8
UmVmPENhbnZhc0dyYWRpZW50Pj4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0
IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFk
aWVudD4+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAs
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
YW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiByZXBldGl0aW9uVHlwZSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPENhbnZhc1BhdHRlcm4+
PiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgU3RyaW5nJiByZXBldGl0
aW9uVHlwZSk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihIVE1MVmlkZW9FbGVtZW50JiwgY29uc3QgU3RyaW5n
JiByZXBldGl0aW9uVHlwZSk7Ci0jZW5kaWYKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFz
UGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UmJiwgY29uc3QgU3RyaW5n
JiByZXBldGl0aW9uKTsKIAogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoSW1hZ2VEYXRhKikgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPElt
YWdlRGF0YT4+IGNyZWF0ZUltYWdlRGF0YShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBjb25z
dDsKQEAgLTMzMSw2ICszMjEsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0
dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogCisgICAgRXhjZXB0aW9uT3I8
UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQmLCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZh
c1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYsIGJvb2wg
cmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyNlbmRpZgorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdl
KEhUTUxJbWFnZUVsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29tcG9zaXRlT3BlcmF0b3ImLCBjb25zdCBCbGVuZE1vZGUm
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7CisjaWYg
RU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MVmlkZW9F
bGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QpOworI2VuZGlmCisKICAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1h
eFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2Vl
biBGb250Q2FzY2FkZSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpGb250UHJveHkgbXVz
dCBob2xkIGNlcnRhaW4gaW52YXJpYW50cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkocmV2aXNpb24g
MjA5MDMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsMTMgQEAKIGVudW0gSW1hZ2VTbW9v
dGhpbmdRdWFsaXR5IHsgImxvdyIsICJtZWRpdW0iLCAiaGlnaCIgfTsKIGVudW0gQ2FudmFzV2lu
ZGluZ1J1bGUgeyAibm9uemVybyIsICJldmVub2RkIiB9OwogCisvLyBGSVhNRTogVGhpcyBzaG91
bGQgaW5jbHVkZSBTVkdJbWFnZUVsZW1lbnQgYW5kIEltYWdlQml0bWFwLgorI2lmIGRlZmluZWQo
RU5BQkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8KK3R5cGVkZWYgKEhUTUxJbWFnZUVsZW1lbnQg
b3IgSFRNTFZpZGVvRWxlbWVudCBvciBIVE1MQ2FudmFzRWxlbWVudCkgQ2FudmFzSW1hZ2VTb3Vy
Y2U7CisjZWxzZQordHlwZWRlZiAoSFRNTEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRWxlbWVu
dCkgQ2FudmFzSW1hZ2VTb3VyY2U7CisjZW5kaWYKKwogWwogICAgIEN1c3RvbUlzUmVhY2hhYmxl
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LApAQCAtNTMsOSArNjAsNiBAQCBlbnVtIENhbnZh
c1dpbmRpbmdSdWxlIHsgIm5vbnplcm8iLCAiZXZlCiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2Fu
dmFzR3JhZGllbnQgY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9h
dCB4MSwgZmxvYXQgeTEpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2FudmFzR3JhZGllbnQg
Y3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCByMCwgZmxvYXQg
eDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7Ci0KICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZs
b2F0IGxpbmVXaWR0aDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxpbmVDYXA7CiAgICAgYXR0
cmlidXRlIERPTVN0cmluZyBsaW5lSm9pbjsKQEAgLTEzMiwxNSArMTM2LDEyIEBAIGVudW0gQ2Fu
dmFzV2luZGluZ1J1bGUgeyAibm9uemVybyIsICJldmUKIAogICAgIHZvaWQgc3Ryb2tlUmVjdCh1
bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBm
bG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7CiAKLSAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIHVucmVzdHJp
Y3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50IGltYWdlLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwg
dW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lk
IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50IGltYWdlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3gs
IHVucmVzdHJpY3RlZCBmbG9hdCBzeSwgdW5yZXN0cmljdGVkIGZsb2F0IHN3LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgc2gsIHVucmVzdHJpY3RlZCBmbG9hdCBkeCwgdW5yZXN0cmljdGVkIGZsb2F0IGR5
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHcsIHVucmVzdHJpY3RlZCBmbG9hdCBkaCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCBjYW52YXMs
IHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCBjYW52YXMsIHVu
cmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZs
b2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsKLSAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgdW5yZXN0cmlj
dGVkIGZsb2F0IHN4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ksIHVucmVzdHJpY3RlZCBmbG9hdCBz
dywgdW5yZXN0cmljdGVkIGZsb2F0IHNoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCBkeSwgdW5yZXN0cmljdGVkIGZsb2F0IGR3LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZGgpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJh
d0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8sIHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgdW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgs
IHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQpOwotICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQgdmlkZW8sIHVu
cmVzdHJpY3RlZCBmbG9hdCBzeCwgdW5yZXN0cmljdGVkIGZsb2F0IHN5LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc3csIHVucmVzdHJpY3RlZCBmbG9hdCBzaCwgdW5yZXN0cmljdGVkIGZsb2F0IGR4LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgZHksIHVucmVzdHJpY3RlZCBmbG9hdCBkdywgdW5yZXN0cmljdGVk
IGZsb2F0IGRoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSB0byB0aGUgQ2FudmFz
RHJhd0ltYWdlIGludGVyZmFjZS4KKyAgICAvLyBGSVhNRTogQWxsIHRoZSB1bnJlc3RyaWN0ZWQg
ZmxvYXQgYXJndW1lbnRzIGJlbG93IHNob3VsZCBiZSB1bnJlc3RyaWN0ZWQgZG91Ymxlcy4KKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGlt
YWdlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHkpOworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkcmF3SW1hZ2UoQ2FudmFzSW1hZ2VTb3VyY2UgaW1hZ2Us
IHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVk
IGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0KTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgZHJhd0ltYWdlKENhbnZhc0ltYWdlU291cmNlIGltYWdlLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc3gsIHVucmVzdHJpY3RlZCBmbG9hdCBzeSwgdW5yZXN0cmljdGVkIGZsb2F0
IHN3LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2gsIHVucmVzdHJpY3RlZCBmbG9hdCBkeCwgdW5yZXN0
cmljdGVkIGZsb2F0IGR5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHcsIHVucmVzdHJpY3RlZCBmbG9h
dCBkaCk7CisKIAogICAgIHZvaWQgZHJhd0ltYWdlRnJvbVJlY3QoSFRNTEltYWdlRWxlbWVudCBp
bWFnZSwKICAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHN4ID0gMCwgb3B0aW9u
YWwgdW5yZXN0cmljdGVkIGZsb2F0IHN5ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0
IHN3ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHNoID0gMCwKQEAgLTE2MiwxNCAr
MTYzLDE0IEBAIGVudW0gQ2FudmFzV2luZGluZ1J1bGUgeyAibm9uemVybyIsICJldmUKICAgICB2
b2lkIHdlYmtpdFB1dEltYWdlRGF0YUhEKEltYWdlRGF0YSBpbWFnZWRhdGEsIGZsb2F0IGR4LCBm
bG9hdCBkeSk7CiAgICAgdm9pZCB3ZWJraXRQdXRJbWFnZURhdGFIRChJbWFnZURhdGEgaW1hZ2Vk
YXRhLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9h
dCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIENhbnZhc1BhdHRlcm4gY3JlYXRlUGF0dGVybihIVE1MQ2FudmFzRWxlbWVudCBjYW52YXMs
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0aXRpb25UeXBlKTsKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4gY3JlYXRlUGF0dGVybihIVE1MSW1h
Z2VFbGVtZW50IGltYWdlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyByZXBl
dGl0aW9uVHlwZSk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
Q2FudmFzUGF0dGVybj8gY3JlYXRlUGF0dGVybihIVE1MVmlkZW9FbGVtZW50IHZpZGVvLCBbVHJl
YXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyByZXBldGl0aW9uVHlwZSk7CiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YT8gaW1h
Z2VkYXRhKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEltYWdlRGF0YSBjcmVhdGVJbWFnZURh
dGEoZmxvYXQgc3csIGZsb2F0IHNoKTsKIAogICAgIFtDdXN0b21dIGF0dHJpYnV0ZSBjdXN0b20g
c3Ryb2tlU3R5bGU7CiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIGN1c3RvbSBmaWxsU3R5bGU7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVMaW5lYXJHcmFkaWVu
dChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSk7CisgICAgW01heVRocm93
RXhjZXB0aW9uXSBDYW52YXNHcmFkaWVudCBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwg
ZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENhbnZhc1BhdHRlcm4/IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1h
Z2VTb3VyY2UgaW1hZ2UsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHJlcGV0
aXRpb24pOwogCiAgICAgLy8gcGl4ZWwgbWFuaXB1bGF0aW9uCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3cs
IGZsb2F0IHNoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>