<?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>152425</bug_id>
          
          <creation_ts>2015-12-18 06:58:20 -0800</creation_ts>
          <short_desc>[JSC] Add EqualOrUnordered to B3</short_desc>
          <delta_ts>2015-12-19 08:52:42 -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>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150260</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-18 06:58:20 -0800</bug_when>
    <thetext>[JSC] Add EqualOrUnordered to B3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150261</commentid>
    <comment_count>1</comment_count>
      <attachid>267626</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-18 06:59:24 -0800</bug_when>
    <thetext>Created attachment 267626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150298</commentid>
    <comment_count>2</comment_count>
      <attachid>267626</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-18 09:33:39 -0800</bug_when>
    <thetext>Comment on attachment 267626
Patch

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

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:1158
&gt; +                return createRelCond(MacroAssembler::BelowOrEqual, MacroAssembler::DoubleEqualOrUnordered);

Why is the first condition &quot;MacroAssembler::BelowOrEqual&quot; instead of &quot;MacroAssembler::Equal&quot;?  Or is this a bogus condition because this condition only applies to doubles?  If so, can we have a comment here similar to the one in &quot;case Above:&quot; below.  Ideally, an assertion that (value-&gt;child(0)-&gt;type() == Float) would be good if this path is not to be taken for ints.  Adding an analogous assertion (ensuring children are Int typed) for Above, Below, AboveEqual, BelowEqual would be good too (but can be done in a separate patch).

LGTM otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150302</commentid>
    <comment_count>3</comment_count>
      <attachid>267626</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-18 09:46:04 -0800</bug_when>
    <thetext>Comment on attachment 267626
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:1158
&gt;&gt; +                return createRelCond(MacroAssembler::BelowOrEqual, MacroAssembler::DoubleEqualOrUnordered);
&gt; 
&gt; Why is the first condition &quot;MacroAssembler::BelowOrEqual&quot; instead of &quot;MacroAssembler::Equal&quot;?  Or is this a bogus condition because this condition only applies to doubles?  If so, can we have a comment here similar to the one in &quot;case Above:&quot; below.  Ideally, an assertion that (value-&gt;child(0)-&gt;type() == Float) would be good if this path is not to be taken for ints.  Adding an analogous assertion (ensuring children are Int typed) for Above, Below, AboveEqual, BelowEqual would be good too (but can be done in a separate patch).
&gt; 
&gt; LGTM otherwise.

Spoke with Ben offline. r=me with fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150304</commentid>
    <comment_count>4</comment_count>
      <attachid>267626</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 09:52:48 -0800</bug_when>
    <thetext>Comment on attachment 267626
Patch

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

Please change the name of the constant folding method.

&gt; Source/JavaScriptCore/b3/B3ConstDoubleValue.cpp:161
&gt; +TriState ConstDoubleValue::equalOrUnordered(const Value* other) const

This should be called equalOrUnorderedConstant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150335</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 10:51:34 -0800</bug_when>
    <thetext>*** Bug 152358 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150340</commentid>
    <comment_count>6</comment_count>
      <attachid>267626</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 10:56:55 -0800</bug_when>
    <thetext>Comment on attachment 267626
Patch

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

Revoking r+ because there are a couple of things that need to be changed before this lands.

&gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:109
&gt; +            case EqualOrUnordered:

You also need a case for EqualOrUnordered in the main switch statement in B3::LowerToAir::lower().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150475</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 18:32:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 267626 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267626&amp;action=review
&gt; 
&gt; Revoking r+ because there are a couple of things that need to be changed
&gt; before this lands.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:109
&gt; &gt; +            case EqualOrUnordered:
&gt; 
&gt; You also need a case for EqualOrUnordered in the main switch statement in
&gt; B3::LowerToAir::lower().

Hmmm, I guess you don&apos;t have to do this in this patch since I guess it triggers https://bugs.webkit.org/show_bug.cgi?id=150903.  Up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150476</commentid>
    <comment_count>8</comment_count>
      <attachid>267626</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 18:32:48 -0800</bug_when>
    <thetext>Comment on attachment 267626
Patch

Flipping back to r+ but please rename Value::equalOrUnordered to Value::equalOrUnorderedConstant to match the other constant-folding method names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150513</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-19 00:14:52 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 267626 [details]
&gt; Patch
&gt; 
&gt; Flipping back to r+ but please rename Value::equalOrUnordered to
&gt; Value::equalOrUnorderedConstant to match the other constant-folding method
&gt; names.

Value::equalOrUnordered() also handle single unordered arg, that&apos;s why it does not have the &quot;Constant&quot; suffix.

Do you still require that renaming?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150530</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 06:52:13 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 267626 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Flipping back to r+ but please rename Value::equalOrUnordered to
&gt; &gt; Value::equalOrUnorderedConstant to match the other constant-folding method
&gt; &gt; names.
&gt; 
&gt; Value::equalOrUnordered() also handle single unordered arg, that&apos;s why it
&gt; does not have the &quot;Constant&quot; suffix.
&gt; 
&gt; Do you still require that renaming?

Good point. But the normal Equal method could always return false if &apos;this&apos; is nan no matter whether the other argument is a constant. 

So I think we use the &quot;Constant&quot; in the method name to signify that this is a constant folding helper. Better to stick with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150534</commentid>
    <comment_count>11</comment_count>
      <attachid>267686</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-19 07:53:42 -0800</bug_when>
    <thetext>Created attachment 267686
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150540</commentid>
    <comment_count>12</comment_count>
      <attachid>267686</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-19 08:52:38 -0800</bug_when>
    <thetext>Comment on attachment 267686
Patch for landing

Clearing flags on attachment: 267686

Committed r194314: &lt;http://trac.webkit.org/changeset/194314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150541</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-19 08:52:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267626</attachid>
            <date>2015-12-18 06:59:24 -0800</date>
            <delta_ts>2015-12-19 07:53:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152425-20151218155844.patch</filename>
            <type>text/plain</type>
            <size>27785</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjkzZTI3ZTM5MzUxZGQyMDIxY2NmMWYwMGI0MGIzNTMyZTBiOTMzLi5iYTQ4N2ZlY2NlOTk3YWQ0
Zjk3ZGQyNTgyMTY0MzhmNDhmOWZlMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNS0xMi0xOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgRXF1YWxPclVub3JkZXJlZCB0byBCMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVxdWFsT3JVbm9y
ZGVyZWQgdG8gQjMgYW5kIHVzZSBpdCB0byBpbXBsZW1lbnRzCisgICAgICAgIEZUTDo6T3V0cHV0
J3MgTm90RXF1YWxBbmRPcmRlcmVkLgorCisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmVxdWFsT3JVbm9yZGVy
ZWQpOgorICAgICAgICAqIGIzL0IzQ29uc3REb3VibGVWYWx1ZS5oOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0
ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93
ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6
CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNWYWxp
ZGF0ZS5jcHA6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZTo6ZXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmV0dXJu
c0Jvb2wpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAoSlND
OjpCMzo6VmFsdWU6OmtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6Cisg
ICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0pOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0ltbSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZERvdWJsZUltbXMpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEltbXMpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNzRG91Ymxl
Q29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExC
M091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxBbmRP
cmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgorICAgICAgICAqIGZ0bC9GVExP
dXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsQW5kT3Jk
ZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVOb3RFcXVhbCk6IERlbGV0
ZWQuCisKIDIwMTUtMTItMTcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gU3RyZWFtbGluZSBUbXAgaW5kZXhpbmcgaW5zaWRlIHRoZSByZWdp
c3RlciBhbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0RG91YmxlVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3Vi
bGVWYWx1ZS5jcHAKaW5kZXggMjViMGEzM2ZhY2M5YzY5MjM4NDFiNzZmMjAwZGE3MmU0ZTczYTQ5
ZC4uYzM4ZmM1ZjFjYTM3ZTJiYTRmMTAyMjZhNzU3ODYwOWU1MzhlYTI4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTE1OCw2ICsx
NTgsMTcgQEAgVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49
IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAorVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1
YWxPclVub3JkZXJlZChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHN0ZDo6
aXNuYW4obV92YWx1ZSkpCisgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisKKyAgICBpZiAo
IW90aGVyLT5oYXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAg
ZG91YmxlIG90aGVyVmFsdWUgPSBvdGhlci0+YXNEb3VibGUoKTsKKyAgICByZXR1cm4gdHJpU3Rh
dGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90
aGVyVmFsdWUpOworfQorCiB2b2lkIENvbnN0RG91YmxlVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJp
bnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KGNv
bW1hKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91Ymxl
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaApp
bmRleCBjY2UzNDBmNTRiYWQ5MzAxOWY5MmE2Mzg5OWY3MjE1MmE0YjZhNzlhLi5mYTQyMDk5MTEy
ZjViODJlMzllMmUwYmEwNGViNzJlMmY4ZDQyY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICBUcmlTdGF0ZSBncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgVHJpU3RhdGUgbGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBUcmlTdGF0ZSBncmVhdGVyRXF1YWxDb25zdGFudChj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIGVxdWFsT3JV
bm9yZGVyZWQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXgg
NzJhMTJlMzA2NTZmMjZjYTBmMWY5Mzk2YWQyMjE0MTAyY2I3MTgzYS4uOWZjMTVmYTIzMzY3NGUw
MGMzMzc4YmE1NTM4ZjIxMGFmNWFmYWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTExNTQsNiArMTE1NCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuT3JFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbCk7CiAgICAgICAgICAgICBj
YXNlIEdyZWF0ZXJFcXVhbDoKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVsQ29uZChN
YWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
R3JlYXRlclRoYW5PckVxdWFsKTsKKyAgICAgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6QmVs
b3dPckVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWxPclVub3JkZXJlZCk7CiAgICAg
ICAgICAgICBjYXNlIEFib3ZlOgogICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBhIGJvZ3VzIGRv
dWJsZSBjb25kaXRpb24gYmVjYXVzZSB0aGVzZSBpbnRlZ2VyIGNvbXBhcmlzb25zIHdvbid0IGdv
dCBkb3duIHRoYXQKICAgICAgICAgICAgICAgICAvLyBwYXRoIGFueXdheS4KQEAgLTE4NDEsNyAr
MTg0Myw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWJvdmU6CiAgICAgICAgIGNhc2UgQmVs
b3c6CiAgICAgICAgIGNhc2UgQWJvdmVFcXVhbDoKLSAgICAgICAgY2FzZSBCZWxvd0VxdWFsOiB7
CisgICAgICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAgICAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVk
OiB7CiAgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3Zh
bHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuY3BwCmluZGV4IDhhYjRiOWViZjA0ODU3ZTY0ODAzODQxMTFkMWRhY2Q1ZjAw
ODUwNmQuLjI1MjA5ZGIzNDYyZjE1NWFhMzg5NDdjMTM2ZTlkYWE3NWNjN2NlY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMjE1LDYgKzIxNSw5IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgQmVs
b3dFcXVhbDoKICAgICAgICAgb3V0LnByaW50KCJCZWxvd0VxdWFsIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgICAgIG91dC5wcmludCgiRXF1YWxP
clVub3JkZXJlZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAg
IG91dC5wcmludCgiU2VsZWN0Iik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzT3Bjb2RlLmgKaW5kZXggYTE4ODM5ZDNjMjNjZDFlMjJmYWRjOWVkNjFjOWZiNzNiZjVlY2Nk
YS4uY2UyYzcwZWU2MGMyNzhlOWU1YWI0MDc4OGFmOTEzZmI0OWZiMjkwZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTEyMyw2ICsxMjMsOSBAQCBlbnVtIE9wY29kZSA6IGlu
dDE2X3QgewogICAgIEFib3ZlRXF1YWwsCiAgICAgQmVsb3dFcXVhbCwKIAorICAgIC8vIFVub3Jk
ZXJlZCBmbG9hdGluZyBwb2ludCBjb21wYXJlOiB2YWx1ZXMgYXJlIGVxdWFsIG9yIGVpdGhlciBv
bmUgaXMgTmFOLgorICAgIEVxdWFsT3JVbm9yZGVyZWQsCisKICAgICAvLyBTU0EgZm9ybSBvZiBj
b25kaXRpb25hbCBtb3ZlLiBUaGUgZmlyc3QgY2hpbGQgaXMgZXZhbHVhdGVkIGZvciB0cnV0aGlu
ZXNzLiBJZiB0cnVlLCB0aGUgc2Vjb25kIGNoaWxkCiAgICAgLy8gaXMgcmV0dXJuZWQuIE90aGVy
d2lzZSwgdGhlIHRoaXJkIGNoaWxkIGlzIHJldHVybmVkLgogICAgIFNlbGVjdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXgg
OGU4MzZjMGQ4MTQ3OTIyNzdlYjcyNDBmNWRiNjMwY2JhMTJmZmRjNS4uY2I0MWY3NGJhMWMzNzcz
ZGRjZDNiZDNmYWUwZDkwZWZlN2IwZWNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCB2b2lk
IHJlZHVjZURvdWJsZVRvRmxvYXQoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAgICAgICAgICBj
YXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CiAgICAgICAgICAg
ICBjYXNlIEdyZWF0ZXJFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoK
ICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBGbG9hdFRv
RG91YmxlICYmIHZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSkgewog
ICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+Y2hpbGQoMCkgPSB2YWx1ZS0+Y2hpbGQoMCktPmNo
aWxkKDApOwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+Y2hpbGQoMSkgPSB2YWx1ZS0+Y2hp
bGQoMSktPmNoaWxkKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCmluZGV4IDdjMGNhMTkzZWQ2YTI1YzZiYWY3MGM0ZThkMzBkNTIwZTRlMmRkMDAu
LmFmMjYzMzUzNmE5MjQwMzAzY2QyNTQ5NDBmYmE4YjdlZWY5Y2M4MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTEwMTAsNiArMTAxMCwx
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKS0+YmVs
b3dFcXVhbENvbnN0YW50KG1fdmFsdWUtPmNoaWxkKDEpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKKyAgICAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgICAgICAgICAgaGFuZGxlQ29t
bXV0YXRpdml0eSgpOworCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEVxdWFsKGNvbnN0MSwg
Y29uc3QyKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBpc3Vub3JkZXJlZChjb25zdDEsIGNv
bnN0MikgfHwgY29uc3QxID09IGNvbnN0Mi4KKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRXF1
YWwodmFsdWUsIGNvbnN0X05hTikKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogMS4KKyAgICAg
ICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoCisgICAgICAgICAgICAgICAgbV9wcm9jLmFkZEJv
b2xDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+b3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEpLT5lcXVhbE9yVW5vcmRlcmVkKG1fdmFs
dWUtPmNoaWxkKDApKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBDaGVj
a0FkZDoKICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxk
KDApLT5jaGVja0FkZENvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApp
bmRleCA3OTZjNThkNDIzNzVlN2ViNDdlMjlmMTVmY2ZjYjZkNzQ2Y2VmOGZkLi40ODY3MzI3NDVm
ODExYzNkMDQ4N2FmZWM3Y2NhYzgyYjEyYzE2OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCkBAIC0yNTUsNiArMjU1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUt
PmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNlbGVjdDoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA5
NjM2MDk0ODdiY2UwY2Q3NmFjZjkzNjNmNGVmODMyMjI2NTIyNmU5Li5iZmIxMTRiNWQ2ZmVmZjFh
MWI1MWM1MGQ3ZjZiYjg1MTJlZWU5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCkBAIC0yODYsNiArMjg2LDExIEBAIFRyaVN0YXRlIFZhbHVlOjpiZWxvd0VxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqKSBjb25zdAogICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwogfQogCitU
cmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZChjb25zdCBWYWx1ZSopIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cit9CisKIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0ZWRDb21w
YXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICBpZiAoIW51bUNoaWxkcmVuKCkpCkBA
IC0zMTUsNiArMzIwLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNh
c2UgQmVsb3c6CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAg
ICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2Ug
UGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAt
MzkwLDYgKzM5Niw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2Ug
QmVsb3c6CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAgICBj
YXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRGl2OgpAQCAtNDg0LDYgKzQ5MSw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBj
b25zdAogICAgIGNhc2UgQmVsb3c6CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVs
b3dFcXVhbDoKKyAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBDaGVja0FkZDoK
ICAgICBjYXNlIENoZWNrU3ViOgogICAgIGNhc2UgQ2hlY2tNdWw6CkBAIC01NzgsNiArNTg2LDcg
QEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1ZSogZmlyc3RDaGlsZCwg
VmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgQmVsb3c6CiAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgIGNhc2UgQmVsb3dFcXVhbDoKKyAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAg
ICAgIHJldHVybiBJbnQzMjsKICAgICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IDFmN2IyZmUxNzNhMDA5Y2VmZDVkNjVlOTMw
M2YxYmI4NGU3NjFjMWYuLjgyY2QwZDhlYWJiNGFiNzM0MjM5ODAxZDE5NTM3ZjNhYmY2NzdhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGFib3ZlRXF1YWxDb25zdGFudChjb25zdCBW
YWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVHJpU3RhdGUgYmVsb3dFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CisgICAgdmlydHVhbCBUcmlTdGF0ZSBlcXVh
bE9yVW5vcmRlcmVkKGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAKICAgICAvLyBJZiB0aGUg
dmFsdWUgaXMgYSBjb21wYXJpc29uIHRoZW4gdGhpcyByZXR1cm5zIHRoZSBpbnZlcnRlZCBmb3Jt
IG9mIHRoYXQgY29tcGFyaXNvbiwgaWYKICAgICAvLyBwb3NzaWJsZS4gSXQgY2FuIGJlIGltcG9z
c2libGUgZm9yIGRvdWJsZSBjb21wYXJpc29ucywgd2hlcmUgZm9yIGV4YW1wbGUgTGVzc1RoYW4g
YW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDg2OWMwMjZkMzhhYjJhOGFh
YTk3MWU0NjQwZGVhOGI5NDc4NjM4ODEuLmNmNDY5Mzk5Zjc5ZTlkZTAwMmU2MmVkYTNmZWRlN2Q2
MDUzZDZkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC01MDYyLDYgKzUw
NjIsMjkwIEBAIHZvaWQgdGVzdEJyYW5jaEVxdWFsRXF1YWwxKCkKICAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSwgMCkgPT0gMCk7CiB9CiAKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVy
ZWRBcmdzKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5D
YXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3Jk
ZXJlZCwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1
bWVudEIpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxv
Y2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2Ut
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEs
IGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxP
clVub3JkZXJlZEFyZ3MoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sq
IHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0g
cHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1bWVudEIpLAorICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRfdCBl
eHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCAmYikgPT0gZXhwZWN0
ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hOb3RFcXVhbEFuZE9yZGVyZWRBcmdzKGRvdWJsZSBh
LCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRC
bG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIFZhbHVlKiBlcXVhbE9yVW5vcmRlcmVkID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3Jp
Z2luKCksCisgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgYXJndW1lbnRCKTsKKyAgICBWYWx1
ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgIGVxdWFsT3JVbm9yZGVyZWQpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICBub3RFcXVhbEFuZE9yZGVyZWQsCisgICAgICAgIEZyZXF1ZW50ZWRC
bG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7CisKKyAgICBpbnQ2NF90IGV4
cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEgIT0gYikgPyA0MiA6IC0xMzsK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVk
KTsKK30KKwordm9pZCB0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncyhmbG9hdCBhLCBm
bG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBW
YWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxv
YXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBlcXVh
bE9yVW5vcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgRXF1
YWxPclVub3JkZXJlZCwgT3JpZ2luKCksCisgICAgICAgIGFyZ3VtZW50QSwKKyAgICAgICAgYXJn
dW1lbnRCKTsKKyAgICBWYWx1ZSogbm90RXF1YWxBbmRPcmRlcmVkID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAgICAgIGVxdWFs
T3JVbm9yZGVyZWQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAg
ICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICBub3RFcXVhbEFuZE9yZGVyZWQsCisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2Fz
ZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7
CisKKyAgICBpbnQ2NF90IGV4cGVjdGVkID0gKCFzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpICYmIGEg
IT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhLCAmYikgPT0gZXhwZWN0ZWQpOworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRl
cmVkRG91YmxlQXJnSW1tKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNl
ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdp
bigpLAorICAgICAgICAgICAgYXJndW1lbnRBLAorICAgICAgICAgICAgYXJndW1lbnRCKSwKKyAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNl
KSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsK
KworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09
IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBh
KSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9h
dEFyZ0ltbShmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3Jp
Z2luKCksCisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1bWVudEIpLAor
ICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNh
c2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykp
OworCisgICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEg
PT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
ICZhKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRE
b3VibGVJbW1zKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRo
ZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0aGVu
Q2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNhc2UtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQy
KSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7CisKKyAgICBpbnQ2NF90IGV4cGVjdGVkID0g
KHN0ZDo6aXN1bm9yZGVyZWQoYSwgYikgfHwgYSA9PSBiKSA/IDQyIDogLTEzOworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gZXhwZWN0ZWQpOworfQorCit2b2lkIHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRJbW1zKGZsb2F0IGEsIGZsb2F0IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVu
dEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2luKCks
CisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBhcmd1bWVudEIpLAorICAgICAg
ICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsK
KworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNl
Q2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisg
ICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikg
PyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpID09IGV4
cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNl
Q2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVudDEgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MUFzRG91YmxlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnQxKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQyQXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVudDIpOworCisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBFcXVhbE9y
VW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50MUFzRG91YmxlLAorICAg
ICAgICAgICAgYXJndW1lbnQyQXNEb3VibGUpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhl
bkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0
MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9
IChzdGQ6OmlzdW5vcmRlcmVkKGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsICZhLCAmYikgPT0gZXhwZWN0ZWQpOworfQor
CiB2b2lkIHRlc3RCcmFuY2hGb2xkKGludCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsK
QEAgLTkwODYsNiArOTM3MCwxNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3RCcmFuY2hFcXVhbEVxdWFsKCkpOwogICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxDb21t
dXRlKCkpOwogICAgIFJVTih0ZXN0QnJhbmNoRXF1YWxFcXVhbDEoKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0sIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0ltbSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVJbW1z
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxv
YXRJbW1zLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJl
ZEZsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogICAgIFJVTih0
ZXN0QnJhbmNoRm9sZCg0MikpOwogICAgIFJVTih0ZXN0QnJhbmNoRm9sZCgwKSk7CiAgICAgUlVO
KHRlc3REaWFtb25kRm9sZCg0MikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExCM091dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1
dC5oCmluZGV4IGFiOGU1MGIyN2MyNTdlY2I5ODE4ZmQwYmQ3NGE0YjFmMWM0OTM3NzYuLjVlOTky
NmI4ZWI0MWVmMjRhYWM1NmNlZmI4MzgxYmE5MmJlODJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEIzT3V0cHV0LmgKQEAgLTMzNiw3ICszMzYsMTEgQEAgcHVibGljOgogICAgIExW
YWx1ZSBkb3VibGVMZXNzVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFs
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFu
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQp
OyB9CiAgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUg
ZG91YmxlTm90RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Cisg
ICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQorICAgIHsKKyAgICAgICAgTFZhbHVlIGVxdWFsT3JVbm9yZGVyZWQgPSBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbE9yVW5vcmRlcmVkLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOworICAgICAgICByZXR1cm4gYml0WG9yKGVxdWFsT3JVbm9yZGVyZWQs
IGludDMyT25lKTsKKyAgICB9CiAgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggYmFiMzliNGM3ZjZkN2M4YjhhZDc3YzdlZGE1YmU5
YmU1NTZkYjU4OS4uZWJjMjVkZTk1MzUyYjJiYjA1NDk0YjczODFmNmFlNzg5NTc0OTc1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAg
LTczMDUsNyArNzMwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgICAgICByZXR1cm4gbV9vdXQubm90WmVybzMyKGxvd0ludDMyKGVkZ2UpKTsKICAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlTm90RXF1
YWwobG93RG91YmxlKGVkZ2UpLCBtX291dC5kb3VibGVaZXJvKTsKKyAgICAgICAgICAgIHJldHVy
biBtX291dC5kb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQobG93RG91YmxlKGVkZ2UpLCBtX291dC5k
b3VibGVaZXJvKTsKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmJpdE5vdCgKICAgICAgICAgICAgICAgICBlcXVhbE51bGxPclVuZGVmaW5l
ZCgKQEAgLTczOTksOSArNzM5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zdXJl
KGRvdWJsZUNhc2UpLCB1bnN1cmUobm90RG91YmxlQ2FzZSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBub3REb3VibGVDYXNlKTsKLSAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCBkb3VibGVOb3RFcXVhbCgpIHJlYWxseSBtZWFucyBub3QtZXF1
YWwtYW5kLW9yZGVyZWQuIEl0IHdpbGwgcmV0dXJuIGZhbHNlCi0gICAgICAgICAgICAvLyBpZiB2
YWx1ZSBpcyBOYU4uCi0gICAgICAgICAgICBMVmFsdWUgZG91YmxlSXNUcnV0aHkgPSBtX291dC5k
b3VibGVOb3RFcXVhbCgKKyAgICAgICAgICAgIExWYWx1ZSBkb3VibGVJc1RydXRoeSA9IG1fb3V0
LmRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCgKICAgICAgICAgICAgICAgICB1bmJveERvdWJsZSh2
YWx1ZSksIG1fb3V0LmNvbnN0RG91YmxlKDApKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihkb3VibGVJc1RydXRoeSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKaW5kZXggNTM5
MTNiMWE5ZjdlNGUxOGEzNzI3NTRiZWZjYmExZDllOGNkYWJlYi4uZGM3YmYzMWUzYTBhODljNzI4
MTEzZjYwYTE1ZmM1ZGZhZWJjZTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5oCkBAIC0zNzYsNyArMzc2LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBkb3VibGVMZXNzVGhh
bk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gZmNtcChMTFZNUmVh
bE9MRSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAoTExWTVJlYWxPR1QsIGxlZnQsIHJp
Z2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gZmNtcChMTFZNUmVhbE9HRSwgbGVmdCwgcmlnaHQpOyB9
Ci0gICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIGZjbXAoTExWTVJlYWxPTkUsIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3Vi
bGVOb3RFcXVhbEFuZE9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
ZmNtcChMTFZNUmVhbE9ORSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUxlc3NU
aGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gZmNtcChM
TFZNUmVhbFVMVCwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAo
TExWTVJlYWxVTEUsIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhh
bk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAoTExW
TVJlYWxVR1QsIGxlZnQsIHJpZ2h0KTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267686</attachid>
            <date>2015-12-19 07:53:42 -0800</date>
            <delta_ts>2015-12-19 08:52:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152425-20151219165303.patch</filename>
            <type>text/plain</type>
            <size>27939</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZGNhNmVkMzkyMzA1NTk3NDI0ZjA4ZWU1MTIyNjJlZTQ4NDM4Nzc4Li4wMjhmYjQyOWYxZWU4OGRi
ZDc3MjRhOTIxNzU5NWQzYTZlNmM4NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MyBAQAogMjAxNS0xMi0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAorICAgICAgICBbSlNDXSBBZGQgRXF1YWxPclVub3JkZXJlZCB0byBCMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgQWRkIEVxdWFsT3JVbm9yZGVyZWQg
dG8gQjMgYW5kIHVzZSBpdCB0byBpbXBsZW1lbnRzCisgICAgICAgIEZUTDo6T3V0cHV0J3MgTm90
RXF1YWxBbmRPcmRlcmVkLgorCisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmVxdWFsT3JVbm9yZGVyZWQpOgor
ICAgICAgICAqIGIzL0IzQ29uc3REb3VibGVWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTG93ZXJU
b0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVy
aWNDb21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgor
ICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJsZVRv
RmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6CisgICAg
ICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5j
cHA6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6
ZXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmV0dXJuc0Jvb2wp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWU6OmtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6CisgICAgICAg
ICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dEJyYW5jaEVxdWFsT3JVbm9yZGVyZWREb3VibGVBcmdJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEFyZ0ltbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZERvdWJsZUltbXMpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdEltbXMpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVy
c2lvbik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1
dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxBbmRPcmRlcmVk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQu
aDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVOb3RFcXVhbCk6IERlbGV0ZWQuCisK
KzIwMTUtMTItMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKICAg
ICAgICAgW0pTQ10gQjM6IEFkZCBpbmRleGVkIGFkZHJlc3Npbmcgd2hlbiBsb3dlcmluZyBCaXR3
aXNlQ2FzdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUyNDMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91
YmxlVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1
ZS5jcHAKaW5kZXggMjViMGEzM2ZhY2M5YzY5MjM4NDFiNzZmMjAwZGE3MmU0ZTczYTQ5ZC4uYTI1
MzdjNDg4ZjA5ODZmZjcxOTM4NWM2ZGVhNjcxN2EwYTk2Mjg3YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTE1OCw2ICsxNTgsMTcg
QEAgVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVy
LT5hc0RvdWJsZSgpKTsKIH0KIAorVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVu
b3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoc3Rk
Ojppc25hbihtX3ZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKworICAgIGlm
ICghb3RoZXItPmhhc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICBkb3VibGUgb3RoZXJWYWx1ZSA9IG90aGVyLT5hc0RvdWJsZSgpOworICAgIHJldHVybiB0cmlT
dGF0ZShzdGQ6OmlzdW5vcmRlcmVkKG1fdmFsdWUsIG90aGVyVmFsdWUpIHx8IG1fdmFsdWUgPT0g
b3RoZXJWYWx1ZSk7Cit9CisKIHZvaWQgQ29uc3REb3VibGVWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQ
cmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQo
Y29tbWEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3Vi
bGVWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5o
CmluZGV4IGNjZTM0MGY1NGJhZDkzMDE5ZjkyYTYzODk5ZjcyMTUyYTRiNmE3OWEuLmE5ZjBiZjc3
MzE5MzY0ZjJlNzVjNmYwYWIwMGQyMDEwMDFlY2QwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgog
ICAgIFRyaVN0YXRlIGdyZWF0ZXJUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBUcmlTdGF0ZSBsZXNzRXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFRyaVN0YXRlIGdyZWF0ZXJFcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVHJpU3RhdGUgZXF1YWxP
clVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCmluZGV4IDcyYTEyZTMwNjU2ZjI2Y2EwZjFmOTM5NmFkMjIxNDEwMmNiNzE4M2EuLjJiZjhj
ZTViM2NjNDcxODk3MWVmMzIwNWY1YTFhMTA1YzIzZTQ0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMTU0LDYgKzExNTQsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpMZXNz
VGhhbk9yRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWwpOwogICAg
ICAgICAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCk7CisgICAgICAgICAgICBjYXNlIEVxdWFsT3JV
bm9yZGVyZWQ6CisgICAgICAgICAgICAgICAgLy8gVGhlIGludGVnZXIgY29uZGl0aW9uIGlzIG5l
dmVyIHVzZWQgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsT3JV
bm9yZGVyZWQpOwogICAgICAgICAgICAgY2FzZSBBYm92ZToKICAgICAgICAgICAgICAgICAvLyBX
ZSB1c2UgYSBib2d1cyBkb3VibGUgY29uZGl0aW9uIGJlY2F1c2UgdGhlc2UgaW50ZWdlciBjb21w
YXJpc29ucyB3b24ndCBnb3QgZG93biB0aGF0CiAgICAgICAgICAgICAgICAgLy8gcGF0aCBhbnl3
YXkuCkBAIC0xODQxLDcgKzE4NDQsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFib3ZlOgog
ICAgICAgICBjYXNlIEJlbG93OgogICAgICAgICBjYXNlIEFib3ZlRXF1YWw6Ci0gICAgICAgIGNh
c2UgQmVsb3dFcXVhbDogeworICAgICAgICBjYXNlIEJlbG93RXF1YWw6CisgICAgICAgIGNhc2Ug
RXF1YWxPclVub3JkZXJlZDogewogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNy
ZWF0ZUNvbXBhcmUobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCA4YWI0YjllYmYwNDg1N2U2NDgw
Mzg0MTExZDFkYWNkNWYwMDg1MDZkLi4yNTIwOWRiMzQ2MmYxNTVhYTM4OTQ3YzEzNmU5ZGFhNzVj
YzdjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTIxNSw2ICsy
MTUsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29k
ZSkKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgICAgIG91dC5wcmludCgiQmVsb3dFcXVhbCIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgICAgICBv
dXQucHJpbnQoIkVxdWFsT3JVbm9yZGVyZWQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
U2VsZWN0OgogICAgICAgICBvdXQucHJpbnQoIlNlbGVjdCIpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmluZGV4IGExODgzOWQzYzIzY2QxZTIyZmFkYzll
ZDYxYzlmYjczYmY1ZWNjZGEuLmNlMmM3MGVlNjBjMjc4ZTllNWFiNDA3ODhhZjkxM2ZiNDlmYjI5
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCkBAIC0xMjMsNiArMTIzLDkgQEAg
ZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBBYm92ZUVxdWFsLAogICAgIEJlbG93RXF1YWws
CiAKKyAgICAvLyBVbm9yZGVyZWQgZmxvYXRpbmcgcG9pbnQgY29tcGFyZTogdmFsdWVzIGFyZSBl
cXVhbCBvciBlaXRoZXIgb25lIGlzIE5hTi4KKyAgICBFcXVhbE9yVW5vcmRlcmVkLAorCiAgICAg
Ly8gU1NBIGZvcm0gb2YgY29uZGl0aW9uYWwgbW92ZS4gVGhlIGZpcnN0IGNoaWxkIGlzIGV2YWx1
YXRlZCBmb3IgdHJ1dGhpbmVzcy4gSWYgdHJ1ZSwgdGhlIHNlY29uZCBjaGlsZAogICAgIC8vIGlz
IHJldHVybmVkLiBPdGhlcndpc2UsIHRoZSB0aGlyZCBjaGlsZCBpcyByZXR1cm5lZC4KICAgICBT
ZWxlY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRv
RmxvYXQuY3BwCmluZGV4IDhlODM2YzBkODE0NzkyMjc3ZWI3MjQwZjVkYjYzMGNiYTEyZmZkYzUu
LmNiNDFmNzRiYTFjMzc3M2RkY2QzYmQzZmFlMGQ5MGVmZTdiMGVjZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC0xMDYs
NiArMTA2LDcgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVyZSYgcHJvY2VkdXJl
KQogICAgICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgICAgIGNhc2UgTGVzc0Vx
dWFsOgogICAgICAgICAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CisgICAgICAgICAgICBjYXNlIEVx
dWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5jaGlsZCgwKS0+b3Bj
b2RlKCkgPT0gRmxvYXRUb0RvdWJsZSAmJiB2YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEZs
b2F0VG9Eb3VibGUpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmNoaWxkKDApID0gdmFs
dWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmNoaWxk
KDEpID0gdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA3YzBjYTE5M2VkNmEyNWM2YmFmNzBjNGU4
ZDMwZDUyMGU0ZTJkZDAwLi45YjVjNGRkMDhkM2RlOGE5YjBhZTI2OTJkNmY1MjIxOGI2Y2JiYjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBA
IC0xMDEwLDYgKzEwMTAsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV92YWx1
ZS0+Y2hpbGQoMCktPmJlbG93RXF1YWxDb25zdGFudChtX3ZhbHVlLT5jaGlsZCgxKSkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICAg
ICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKKworICAgICAgICAgICAgLy8gVHVybiB0aGlz
OiBFcXVhbChjb25zdDEsIGNvbnN0MikKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogaXN1bm9y
ZGVyZWQoY29uc3QxLCBjb25zdDIpIHx8IGNvbnN0MSA9PSBjb25zdDIuCisgICAgICAgICAgICAv
LyBUdXJuIHRoaXM6IEVxdWFsKHZhbHVlLCBjb25zdF9OYU4pCisgICAgICAgICAgICAvLyBJbnRv
IHRoaXM6IDEuCisgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKAorICAgICAgICAgICAg
ICAgIG1fcHJvYy5hZGRCb29sQ29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUt
Pm9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKS0+ZXF1YWxP
clVub3JkZXJlZENvbnN0YW50KG1fdmFsdWUtPmNoaWxkKDApKSkpOworICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgY2FzZSBDaGVja0FkZDoKICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0
aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxkKDApLT5jaGVja0FkZENvbnN0YW50KG1fcHJvYywgbV92
YWx1ZS0+Y2hpbGQoMSkpKSkKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCA3OTZjNThkNDIzNzVlN2ViNDdlMjlmMTVmY2Zj
YjZkNzQ2Y2VmOGZkLi40ODY3MzI3NDVmODExYzNkMDQ4N2FmZWM3Y2NhYzgyYjEyYzE2OTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yNTUsNiArMjU1LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFNlbGVjdDoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAzLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA5NjM2MDk0ODdiY2UwY2Q3NmFjZjkzNjNmNGVmODMyMjI2
NTIyNmU5Li4wZTA2NGQ0MzIyYmM2ZmU0ZjQzMTQ5MzE2OGIxNTczNzUwNjZmNzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0yODYsNiArMjg2LDExIEBAIFRyaVN0YXRl
IFZhbHVlOjpiZWxvd0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOwogfQogCitUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENv
bnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKK3sKKyAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
K30KKwogVmFsdWUqIFZhbHVlOjppbnZlcnRlZENvbXBhcmUoUHJvY2VkdXJlJiBwcm9jKSBjb25z
dAogewogICAgIGlmICghbnVtQ2hpbGRyZW4oKSkKQEAgLTMxNSw2ICszMjAsNyBAQCBib29sIFZh
bHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBCZWxvdzoKICAgICBjYXNlIEFib3Zl
RXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgorICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC0zOTAsNiArMzk2LDcgQEAgRWZmZWN0cyBW
YWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvdzoKICAgICBjYXNlIEFib3ZlRXF1
YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgorICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAg
ICBjYXNlIFNlbGVjdDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CkBAIC00ODQsNiAr
NDkxLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBCZWxvdzoKICAg
ICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgorICAgIGNhc2UgRXF1YWxP
clVub3JkZXJlZDoKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CiAgICAg
Y2FzZSBDaGVja011bDoKQEAgLTU3OCw2ICs1ODYsNyBAQCBUeXBlIFZhbHVlOjp0eXBlRm9yKE9w
Y29kZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAgICAg
Y2FzZSBCZWxvdzoKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgor
ICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICAgICAgcmV0dXJuIEludDMyOwogICAgIGNh
c2UgU0V4dDMyOgogICAgIGNhc2UgWkV4dDMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgK
aW5kZXggMWY3YjJmZTE3M2EwMDljZWZkNWQ2NWU5MzAzZjFiYjg0ZTc2MWMxZi4uMGE0ZDVlN2Qy
Mzc1NjVkZWI3MWI2NTZjMzBhNjY0ZGJhNzM2NTllOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHJpU3RhdGUg
YmVsb3dDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVHJp
U3RhdGUgYWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAg
dmlydHVhbCBUcmlTdGF0ZSBiZWxvd0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFRyaVN0YXRlIGVxdWFsT3JVbm9yZGVyZWRDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogCiAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIGEgY29tcGFy
aXNvbiB0aGVuIHRoaXMgcmV0dXJucyB0aGUgaW52ZXJ0ZWQgZm9ybSBvZiB0aGF0IGNvbXBhcmlz
b24sIGlmCiAgICAgLy8gcG9zc2libGUuIEl0IGNhbiBiZSBpbXBvc3NpYmxlIGZvciBkb3VibGUg
Y29tcGFyaXNvbnMsIHdoZXJlIGZvciBleGFtcGxlIExlc3NUaGFuIGFuZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAppbmRleCBlZjQ3ZmQ4MDU2ZmMyOWMxNzg4MDA5MTZmMzU5ODU1YWE5
YmIzMDZlLi5lMGFjOGQ2OTRiNjBiMjQ4ODdkYzk3MzE3MWUxYzY0MDkzODIyOWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtNTA5Niw2ICs1MDk2LDI5MCBAQCB2b2lkIHRl
c3RCcmFuY2hFcXVhbEVxdWFsMSgpCiAgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsIDApID09
IDApOwogfQogCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkQXJncyhkb3VibGUgYSwg
ZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
IFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgYXJndW1lbnRBLAorICAgICAgICAgICAgYXJndW1lbnRCKSwKKyAgICAgICAg
RnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisK
KyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAg
IGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8g
NDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9
PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRBcmdzKGZs
b2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnRBLAorICAg
ICAgICAgICAgYXJndW1lbnRCKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwg
RnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRo
ZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKwor
ICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjpp
c3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0
ZXN0QnJhbmNoTm90RXF1YWxBbmRPcmRlcmVkQXJncyhkb3VibGUgYSwgZG91YmxlIGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmd1bWVu
dEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKKyAgICBWYWx1ZSogZXF1YWxPclVub3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICBh
cmd1bWVudEEsCisgICAgICAgIGFyZ3VtZW50Qik7CisgICAgVmFsdWUqIG5vdEVxdWFsQW5kT3Jk
ZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApLAorICAgICAgICBlcXVhbE9yVW5vcmRlcmVkKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
bm90RXF1YWxBbmRPcmRlcmVkLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBG
cmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhl
bkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisg
ICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9ICghc3RkOjpp
c3Vub3JkZXJlZChhLCBiKSAmJiBhICE9IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZCk7Cit9CisKK3ZvaWQgdGVz
dEJyYW5jaE5vdEVxdWFsQW5kT3JkZXJlZEFyZ3MoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZ3VtZW50QSA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZXF1YWxPclVub3JkZXJlZCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9y
aWdpbigpLAorICAgICAgICBhcmd1bWVudEEsCisgICAgICAgIGFyZ3VtZW50Qik7CisgICAgVmFs
dWUqIG5vdEVxdWFsQW5kT3JkZXJlZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBlcXVhbE9yVW5vcmRlcmVkKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKKyAgICAgICAgbm90RXF1YWxBbmRPcmRlcmVkLAorICAgICAgICBGcmVxdWVudGVk
QmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5D
YXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xMykpOworCisgICAgaW50NjRfdCBl
eHBlY3RlZCA9ICghc3RkOjppc3Vub3JkZXJlZChhLCBiKSAmJiBhICE9IGIpID8gNDIgOiAtMTM7
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSwgJmIpID09IGV4cGVj
dGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZERvdWJsZUFyZ0ltbShk
b3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBFcXVhbE9yVW5vcmRlcmVkLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IGFyZ3VtZW50QSwKKyAgICAgICAgICAgIGFyZ3VtZW50QiksCisgICAgICAgIEZyZXF1ZW50ZWRC
bG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEzKSk7CisKKyAgICBpbnQ2NF90IGV4
cGVjdGVkID0gKHN0ZDo6aXN1bm9yZGVyZWQoYSwgYikgfHwgYSA9PSBiKSA/IDQyIDogLTEzOwor
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gZXhwZWN0ZWQpOwor
fQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRBcmdJbW0oZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9j
aygpOworICAgIEJhc2ljQmxvY2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
VmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYik7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgYXJndW1lbnRBLAorICAgICAgICAgICAgYXJndW1lbnRCKSwKKyAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3Qg
ZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmYSkgPT0gZXhwZWN0ZWQp
OworfQorCit2b2lkIHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcyhkb3VibGUg
YSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVu
b3JkZXJlZCwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudEEsCisgICAgICAgICAgICBh
cmd1bWVudEIpLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVk
QmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNh
c2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIC0xMykpOworCisgICAgaW50NjRfdCBleHBlY3RlZCA9IChzdGQ6OmlzdW5vcmRlcmVk
KGEsIGIpIHx8IGEgPT0gYikgPyA0MiA6IC0xMzsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MpID09IGV4cGVjdGVkKTsKK30KKwordm9pZCB0ZXN0QnJhbmNoRXF1YWxPclVu
b3JkZXJlZEZsb2F0SW1tcyhmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1
bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Yik7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEVxdWFsT3JVbm9yZGVyZWQsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJn
dW1lbnRBLAorICAgICAgICAgICAgYXJndW1lbnRCKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
KHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0
ZWQgPSAoc3RkOjppc3Vub3JkZXJlZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSBleHBlY3RlZCk7Cit9CisKK3Zv
aWQgdGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVy
c2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGhlbkNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2UgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBWYWx1ZSogYXJndW1lbnQxID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDFBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50MSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50MkFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgYXJndW1lbnQyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgRXF1YWxPclVub3JkZXJlZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICBhcmd1bWVudDFBc0RvdWJsZSwKKyAgICAgICAgICAgIGFyZ3VtZW50
MkFzRG91YmxlKSwKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRl
ZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHRoZW5DYXNlLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VD
YXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAtMTMpKTsKKworICAgIGludDY0X3QgZXhwZWN0ZWQgPSAoc3RkOjppc3Vub3JkZXJl
ZChhLCBiKSB8fCBhID09IGIpID8gNDIgOiAtMTM7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCAmYSwgJmIpID09IGV4cGVjdGVkKTsKK30KKwogdm9pZCB0ZXN0QnJhbmNo
Rm9sZChpbnQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC05MTIyLDYgKzk0MDYs
MTcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0QnJhbmNoRXF1
YWxFcXVhbCgpKTsKICAgICBSVU4odGVzdEJyYW5jaEVxdWFsQ29tbXV0ZSgpKTsKICAgICBSVU4o
dGVzdEJyYW5jaEVxdWFsRXF1YWwxKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFs
T3JVbm9yZGVyZWRBcmdzLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hFcXVh
bE9yVW5vcmRlcmVkQXJncywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaE5vdEVx
dWFsQW5kT3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaE5v
dEVxdWFsQW5kT3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCcmFuY2hF
cXVhbE9yVW5vcmRlcmVkRG91YmxlQXJnSW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRl
c3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRmxvYXRBcmdJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RCcmFuY2hFcXVhbE9yVW5vcmRlcmVkRG91YmxlSW1tcywgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0QnJhbmNoRXF1YWxPclVub3JkZXJlZEZsb2F0SW1tcywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaEVxdWFsT3JVbm9yZGVyZWRGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaE5vdEVx
dWFsQW5kT3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJyYW5jaE5v
dEVxdWFsQW5kT3JkZXJlZEFyZ3MsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKICAgICBSVU4odGVzdEJyYW5jaEZvbGQoNDIp
KTsKICAgICBSVU4odGVzdEJyYW5jaEZvbGQoMCkpOwogICAgIFJVTih0ZXN0RGlhbW9uZEZvbGQo
NDIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCBhYjhlNTBi
MjdjMjU3ZWNiOTgxOGZkMGJkNzRhNGIxZjFjNDkzNzc2Li41ZTk5MjZiOGViNDFlZjI0YWFjNTZj
ZWZiODM4MWJhOTJiZTgyZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEIzT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1
dC5oCkBAIC0zMzYsNyArMzM2LDExIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgZG91YmxlTGVzc1Ro
YW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBk
b3VibGVHcmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlckVxdWFs
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsKExW
YWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBkb3VibGVO
b3RFcXVhbEFuZE9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKKyAgICB7CisgICAg
ICAgIExWYWx1ZSBlcXVhbE9yVW5vcmRlcmVkID0gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6RXF1YWxPclVub3JkZXJlZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgcmV0dXJuIGJpdFhvcihlcXVhbE9yVW5vcmRlcmVkLCBpbnQzMk9uZSk7CisgICAg
fQogICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpCiAgICAgewogICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCmluZGV4IGJhYjM5YjRjN2Y2ZDdjOGI4YWQ3N2M3ZWRhNWJlOWJlNTU2ZGI1ODkuLmViYzI1
ZGU5NTM1MmIyYmIwNTQ5NGI3MzgxZjZhZTc4OTU3NDk3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC03MzA1LDcgKzczMDUsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1f
b3V0Lm5vdFplcm8zMihsb3dJbnQzMihlZGdlKSk7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZU5vdEVxdWFsKGxvd0RvdWJsZShlZGdl
KSwgbV9vdXQuZG91YmxlWmVybyk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlTm90
RXF1YWxBbmRPcmRlcmVkKGxvd0RvdWJsZShlZGdlKSwgbV9vdXQuZG91YmxlWmVybyk7CiAgICAg
ICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXRO
b3QoCiAgICAgICAgICAgICAgICAgZXF1YWxOdWxsT3JVbmRlZmluZWQoCkBAIC03Mzk5LDkgKzcz
OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc3VyZShkb3VibGVDYXNlKSwgdW5z
dXJlKG5vdERvdWJsZUNhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oZG91YmxlQ2FzZSwgbm90RG91YmxlQ2FzZSk7Ci0gICAgICAgICAgICAvLyBOb3RlIHRo
YXQgZG91YmxlTm90RXF1YWwoKSByZWFsbHkgbWVhbnMgbm90LWVxdWFsLWFuZC1vcmRlcmVkLiBJ
dCB3aWxsIHJldHVybiBmYWxzZQotICAgICAgICAgICAgLy8gaWYgdmFsdWUgaXMgTmFOLgotICAg
ICAgICAgICAgTFZhbHVlIGRvdWJsZUlzVHJ1dGh5ID0gbV9vdXQuZG91YmxlTm90RXF1YWwoCisg
ICAgICAgICAgICBMVmFsdWUgZG91YmxlSXNUcnV0aHkgPSBtX291dC5kb3VibGVOb3RFcXVhbEFu
ZE9yZGVyZWQoCiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodmFsdWUpLCBtX291dC5jb25z
dERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91
YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IDUzOTEzYjFhOWY3ZTRlMThhMzcy
NzU0YmVmY2JhMWQ5ZThjZGFiZWIuLmRjN2JmMzFlM2EwYTg5YzcyODExM2Y2MGExNWZjNWRmYWVi
Y2UwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMzc2LDcgKzM3
Niw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVxdWFsKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAoTExWTVJlYWxPTEUsIGxlZnQsIHJpZ2h0
KTsgfQogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBmY21wKExMVk1SZWFsT0dULCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFs
dWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIGZjbXAoTExWTVJlYWxPR0UsIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3Vi
bGVOb3RFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBmY21wKExMVk1S
ZWFsT05FLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlTm90RXF1YWxBbmRPcmRl
cmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAoTExWTVJlYWxPTkUs
IGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKExW
YWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGZjbXAoTExWTVJlYWxVTFQsIGxlZnQs
IHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBmY21wKExMVk1SZWFsVUxFLCBsZWZ0
LCByaWdodCk7IH0KICAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBmY21wKExMVk1SZWFsVUdULCBsZWZ0LCBy
aWdodCk7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>