<?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>151474</bug_id>
          
          <creation_ts>2015-11-19 18:55:28 -0800</creation_ts>
          <short_desc>[JSC] Add Air lowering to BitNot() for Xor(value, -1)</short_desc>
          <delta_ts>2015-11-20 14:07:12 -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="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>1143542</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-19 18:55:28 -0800</bug_when>
    <thetext>[JSC] Add B3 BitNot and Strength Reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143543</commentid>
    <comment_count>1</comment_count>
      <attachid>265927</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-19 18:56:32 -0800</bug_when>
    <thetext>Created attachment 265927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143545</commentid>
    <comment_count>2</comment_count>
      <attachid>265927</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-19 19:18:11 -0800</bug_when>
    <thetext>Comment on attachment 265927
Patch

We don&apos;t need a new opcode for this. BitNot(x) is just BitXor(x, -1). I don&apos;t think it&apos;s useful to have a BitNot instruction when BitXor with an immediate serves the same purpose. Also, it would be weird to have BitNot but not Neg - Neg is currently handled using Sub(0, x), sort of like how I&apos;m proposing to handle Not using Xor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143559</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-19 19:51:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 265927 [details]
&gt; Patch
&gt; 
&gt; We don&apos;t need a new opcode for this. BitNot(x) is just BitXor(x, -1). I
&gt; don&apos;t think it&apos;s useful to have a BitNot instruction when BitXor with an
&gt; immediate serves the same purpose. Also, it would be weird to have BitNot
&gt; but not Neg - Neg is currently handled using Sub(0, x), sort of like how I&apos;m
&gt; proposing to handle Not using Xor.

Yep, that&apos;s a better idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143562</commentid>
    <comment_count>4</comment_count>
      <attachid>265934</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-19 19:54:32 -0800</bug_when>
    <thetext>Created attachment 265934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143588</commentid>
    <comment_count>5</comment_count>
      <attachid>265934</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-19 22:31:26 -0800</bug_when>
    <thetext>Comment on attachment 265934
Patch

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

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:1319
&gt; +                appendUnOp&lt;Not32, Not64, Air::Oops&gt;(m_value-&gt;child(0));

this is missing a break statement. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143733</commentid>
    <comment_count>6</comment_count>
      <attachid>265979</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-20 12:23:52 -0800</bug_when>
    <thetext>Created attachment 265979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143752</commentid>
    <comment_count>7</comment_count>
      <attachid>265979</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-20 12:44:54 -0800</bug_when>
    <thetext>Comment on attachment 265979
Patch

Don&apos;t forget the Store(Not(Load)) case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143759</commentid>
    <comment_count>8</comment_count>
      <attachid>265981</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-20 13:07:38 -0800</bug_when>
    <thetext>Created attachment 265981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143806</commentid>
    <comment_count>9</comment_count>
      <attachid>265981</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-20 14:07:08 -0800</bug_when>
    <thetext>Comment on attachment 265981
Patch

Clearing flags on attachment: 265981

Committed r192696: &lt;http://trac.webkit.org/changeset/192696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143807</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-20 14:07:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265927</attachid>
            <date>2015-11-19 18:56:32 -0800</date>
            <delta_ts>2015-11-19 19:54:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151474-20151119185620.patch</filename>
            <type>text/plain</type>
            <size>27138</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDQ1OGIzZTc3YTRmMTg5OGQ3NDI2OWFkYzA1M2FlZTYyOGIzMWY0Li4wYzdmNTZkNWNhZWZiMzc4
ZTgzZDdmYmNjYTJjZDIwZThiMWNkOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNS0xMS0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQjMgQml0Tm90IGFuZCBTdHJlbmd0aCBSZWR1Y3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQ3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpub3Q2NCk6
CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6Om5vdHFfcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bm90cV9tKToK
KyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25z
dDMyVmFsdWU6OmJpdE5vdENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNv
bnN0NjRWYWx1ZTo6Yml0Tm90Q29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVl
Lmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6Y3JlYXRlR2VuZXJpY0NvbXBhcmUpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5oOgorICAg
ICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUu
Y3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6
OmJpdE5vdENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6
CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3Ri
My5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TmVnVmFsdWVTdWJPbmUpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdE5lZ1ZhbHVlU3ViT25lMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJp
dE5vdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90SW1tKToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RCaXROb3RNZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE5vdE9uQm9v
bGVhbkFuZEJyYW5jaCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90QXJnMzIpOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdEJpdE5vdEltbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RC
aXROb3RNZW0zMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90T25Cb29sZWFuQW5kQnJh
bmNoMzIpOgorICAgICAgICAoSlNDOjpCMzo6aW50NjRPcGVyYW5kcyk6CisgICAgICAgIChKU0M6
OkIzOjppbnQzMk9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisgICAgICAgICog
ZnRsL0ZUTEIzT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXROb3QpOgor
CiAyMDE1LTExLTE5ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFtFUzZdIEFkZCBzdXBwb3J0IGZvciByZXN0IHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApp
bmRleCBiYzg0NjViNDc2YzI3NzI5ZjQwZjNiYTUwN2I2YzFlNDdjMDNlNmYxLi5jMzM1MWUyOWNi
YmEzYjMxYzMzZDlkZDIxYTA1YWYzOWExMDA5NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC00
ODEsNiArNDgxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgeG9yMzIoaW1tLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIG5vdDMyKFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm5vdGxfcihzcmNEZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDMyKEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRzZF9y
cihzcmMsIGRzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggNmFiMzQ5NmMyY2U2OTdlZTE3YTg5NmVmZjFk
OWZmZmQ3NzlmOWIyOS4uNTM5MjU1ZjEzOWY2NjdmNTY4YmQ1YTJkNTdkNjFmZTBlYjFjMDQ0YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaApAQCAtNTAyLDYgKzUwMiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
bm90NjQoUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90
cV9yKHNyY0Rlc3QpOworICAgIH0KKworICAgIHZvaWQgbm90NjQoQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYThmZDBjNjQ5MWY2OTZlNjc2MGQ5YTM3NWIwMDI1
ODNhY2VjZjUxYi4uMjg1N2Q1MDg0OWE3NDE0NDc2Zjg3ZjBkOTZiNjdlNzAyMTBiNGQ1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC02
MjIsNiArNjIyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyNpZiBD
UFUoWDg2XzY0KQorICAgIHZvaWQgbm90cV9yKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBk
c3QpOworICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQg
b3JsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGRzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAppbmRleCAyODZiYTEyMjA5ODg0ZmE4ZGJk
YWU4ZDM4Yjk2ZWU1NDFhMzllZjMxLi5jZmUzYmU4NTJiN2MxOWMxMGE5NTkyMDBmZDBjZjMzZjBi
NGNhYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAK
QEAgLTEzMyw2ICsxMzMsMTEgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6Yml0WG9yQ29uc3RhbnQo
UHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgXiBvdGhlci0+YXNJbnQzMigp
KTsKIH0KIAorVmFsdWUqIENvbnN0MzJWYWx1ZTo6Yml0Tm90Q29uc3RhbnQoUHJvY2VkdXJlJiBw
cm9jKSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigp
LCAtbV92YWx1ZSAtIDEpOworfQorCiBWYWx1ZSogQ29uc3QzMlZhbHVlOjpzaGxDb25zdGFudChQ
cm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQzMigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3QzMlZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUu
aAppbmRleCBhMWVlZTlmMDM0ZWNjZDc0MjA2YjI5NjhiYWExNTc4YTkwY2RiZmU0Li5mYTE0YmE3
NDhkYmM1OGMwOTExNDBmZGVjM2JjMmE1NzMwMWJhN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdDMyVmFsdWUuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgVmFs
dWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdE9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0WG9yQ29uc3RhbnQoUHJv
Y2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSog
Yml0Tm90Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIHNo
bENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgVmFsdWUqIHNTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiB6U2hyQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDY0VmFsdWUuY3BwCmluZGV4IDllMDQzZWViMGFlMDgxN2Q4YzhmMDc1OWY2ODhm
ODFmMDY3MDI3N2MuLmViYWRhNTI3ZGY0Y2EyMTFjMzI3YTY0N2JlMDVmZTdiMDJiMTRkZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcApAQCAtMTMzLDYg
KzEzMywxMSBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpiaXRYb3JDb25zdGFudChQcm9jZWR1cmUm
IHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3Q2NFZhbHVlPihvcmlnaW4oKSwgbV92YWx1ZSBeIG90aGVyLT5hc0ludDY0KCkpOwogfQogCitW
YWx1ZSogQ29uc3Q2NFZhbHVlOjpiaXROb3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIC1tX3ZhbHVl
IC0gMSk7Cit9CisKIFZhbHVlKiBDb25zdDY0VmFsdWU6OnNobENvbnN0YW50KFByb2NlZHVyZSYg
cHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0lu
dDMyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCmluZGV4IDgx
ZjA4ZmQxYjc4MTM4MTIwYTQ0ZjRlNTFkYmYyMzQxMmNkOWFmZTcuLmJiZjI5MWRjNDk2Y2M5ZTlj
NWY2N2E4MzQwMmZmYjAxYjQyM2YxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0NjRWYWx1ZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYml0QW5k
Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
ICAgICBWYWx1ZSogYml0T3JDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXRYb3JDb25zdGFudChQcm9jZWR1cmUmLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXROb3RDb25z
dGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogc2hsQ29uc3RhbnQo
UHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1
ZSogc1NockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAppbmRleCBiYjlmNDI0NzdhOTg3ODBhMGEzNDA5MTM3YWFlYWNlMmZhYmZjOTk1Li44
YzdkNTNlZGNlMzY0YWNmZGFmMjRiNjg4NzM4M2I2NzZhZTM0Nzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtODA1LDcgKzgwNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBib29sIHNob3VsZEludmVydCA9
CiAgICAgICAgICAgICAgICAgKHZhbHVlLT5vcGNvZGUoKSA9PSBCaXRYb3IgJiYgdmFsdWUtPmNo
aWxkKDEpLT5pc0ludCgxKSAmJiB2YWx1ZS0+Y2hpbGQoMCktPnJldHVybnNCb29sKCkpCi0gICAg
ICAgICAgICAgICAgfHwgKHZhbHVlLT5vcGNvZGUoKSA9PSBFcXVhbCAmJiB2YWx1ZS0+Y2hpbGQo
MSktPmlzSW50KDApKTsKKyAgICAgICAgICAgICAgICB8fCAodmFsdWUtPm9wY29kZSgpID09IEVx
dWFsICYmIHZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpCisgICAgICAgICAgICAgICAgfHwgKHZh
bHVlLT5vcGNvZGUoKSA9PSBCaXROb3QgJiYgdmFsdWUtPmNoaWxkKDApLT5yZXR1cm5zQm9vbCgp
KTsKICAgICAgICAgICAgIGlmICghc2hvdWxkSW52ZXJ0KQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS0+Y2hpbGQoMCk7CkBAIC0xMzIwLDYgKzEzMjEs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2UgQml0Tm90OiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2NCwgQWly
OjpPb3BzPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDEpLT5pc0ludDMyKDEpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBvcHRpbWl6YXRpb24g
bWFrZXMgc2Vuc2Ugb24gWDg2LiBJIGRvbid0IGtub3cgaWYgaXQgbWFrZXMgc2Vuc2UgYW55d2hl
cmUgZWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDYyYTcxM2Vh
NDNiMGFiNDI0OGE5NTA5OTEyOTk4ZTBiNDVmMjEwODkuLjIxMjllODJhNDIzZDM3YWVlYWIxYTA0
Yjk4YzdlOTljODI3OWEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApA
QCAtMTI4LDYgKzEyOCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBP
cGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgQml0WG9yOgogICAgICAgICBvdXQucHJpbnQoIkJpdFhv
ciIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBCaXROb3Q6CisgICAgICAgIG91dC5wcmlu
dCgiQml0Tm90Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNobDoKICAgICAgICAgb3V0
LnByaW50KCJTaGwiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuaAppbmRleCA1ZGM3MDk3ZmI0NzQ2MGU3MmE1M2IxMDZhMGY5NGE2YzM1YzY1OTVmLi5lN2Iz
MDkzMjQwMTQyZWI4Mjc4YmI5YTA1MjBmZDc3OTRhYzcyNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qgewog
ICAgIEJpdEFuZCwKICAgICBCaXRPciwKICAgICBCaXRYb3IsCisgICAgQml0Tm90LAogICAgIFNo
bCwKICAgICBTU2hyLCAvLyBBcml0aG1ldGljIFNoaWZ0LgogICAgIFpTaHIsIC8vIExvZ2ljYWwg
U2hpZnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
aW5kZXggMzY3M2EyZmQwMjNlZWQwMzhiMThiNTE3MTBjNTQxYWQyYjhjN2I3NS4uZTczZDg3NWJj
NjY0MGEzYjc3MTM0MmRlMjc0ZmQ4Yjk3ZmRiYTY1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMTgwLDYgKzE4MCwxNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogSW50ZWdlciBB
ZGQoU3ViKDAsIHZhbHVlKSwgLTEpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdE5vdCh2
YWx1ZSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKQorICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBTdWIKKyAgICAgICAgICAgICAg
ICAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoLTEpCisgICAgICAgICAgICAgICAgJiYgbV92
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAgICAgICAgICAgICAgIHJl
cGxhY2VXaXRoTmV3VmFsdWUobV9wcm9jLmFkZDxWYWx1ZT4oQml0Tm90LCBtX3ZhbHVlLT5vcmln
aW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
U3ViOgpAQCAtNDMzLDYgKzQ0NCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdFhvcih2YWx1
ZSwgYWxsLW9uZXMtY29uc3RhbnQpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHZhbHVlLgor
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDB4ZmZmZmZmZmYpIHx8
IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDY0KDB4ZmZmZmZmZmZmZmZmZmZmZikpIHsKKyAgICAg
ICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKG1fcHJvYy5hZGQ8VmFsdWU+KEJpdE5vdCwg
bV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgQml0Tm90OgorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXROb3QoY29uc3RhbnQpCisg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IG5vdF9jb25zdGFudAorICAgICAgICAgICAgaWYgKFZh
bHVlKiBjb25zdGFudEJpdE5vdCA9IG1fdmFsdWUtPmNoaWxkKDApLT5iaXROb3RDb25zdGFudCht
X3Byb2MpKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudEJp
dE5vdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNobDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcAppbmRleCBjMDJmMjNjZmM1MWExMWJhZTYzMDA4OWZhYmE3NDA5NjYxODM3NDM4
Li44MTNmYjc1ZTYxNWM3Y2M1ZmE5NTdmZTEwNzkzMzUxMDViZjA0M2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0xNjQsNiArMTY0LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgx
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBCaXROb3Q6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50
eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBTaGw6CiAgICAgICAgICAgICBjYXNlIFNTaHI6CiAgICAgICAgICAgICBjYXNl
IFpTaHI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggMTYzZjZiMDc5ZmE3
ZTcyNjliZjQyODYyMzg1ZmQ0M2FkNzdjYjhhNi4uNTQ3ZDJmYmQyYjhkMDE1N2VkM2Y4ZTdiNGVl
Yzk0ZmZjZGQ0ZDNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMTc5
LDYgKzE3OSwxMSBAQCBWYWx1ZSogVmFsdWU6OmJpdFhvckNvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKikgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorVmFsdWUqIFZhbHVl
OjpiaXROb3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRy
OworfQorCiBWYWx1ZSogVmFsdWU6OnNobENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVl
KikgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMyMiw2ICszMjcsNyBAQCBFZmZl
Y3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJpdEFuZDoKICAgICBjYXNlIEJp
dE9yOgogICAgIGNhc2UgQml0WG9yOgorICAgIGNhc2UgQml0Tm90OgogICAgIGNhc2UgU2hsOgog
ICAgIGNhc2UgU1NocjoKICAgICBjYXNlIFpTaHI6CkBAIC00OTAsNiArNDk2LDcgQEAgVHlwZSBW
YWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1ZSogZmlyc3RDaGlsZCkKICAgICBjYXNl
IEJpdEFuZDoKICAgICBjYXNlIEJpdE9yOgogICAgIGNhc2UgQml0WG9yOgorICAgIGNhc2UgQml0
Tm90OgogICAgIGNhc2UgU2hsOgogICAgIGNhc2UgU1NocjoKICAgICBjYXNlIFpTaHI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCAzYmQ5ZTJhYzhlOGRjYWE0NmEyOTg4YTk1OTMw
YzJjYjAzNWE3M2RhLi5mZGI0YTc0MTYwYzAxOWE3N2Q4NjUzZTgxYjE1YjhlZWY0NzViZjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2Nl
ZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYml0
WG9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFZhbHVlKiBiaXROb3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0
dWFsIFZhbHVlKiBzaGxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHNTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBW
YWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHpTaHJDb25zdGFudChQcm9j
ZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTYxODBiNjI2YWI2OTVhMGZlMjU1
MzkxZDk0ODgyZjQ0ZjhiYjEwMS4uNGRiZTk0N2QwM2FhMjg1ZTBjYWNhOGIyMGU1ZDcwOWMyOGNi
YzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCkBAIC0xOTUsNiArMTk1LDE0IEBAIFhvcjY0IFU6RywgVUQ6RwogICAgIFRtcCwgQWRkcgog
ICAgIEltbSwgVG1wCiAKK05vdDMyIFVEOkcKKyAgICBUbXAKKyAgICBBZGRyCisKK05vdDY0IFVE
OkcKKyAgICBUbXAKKyAgICBBZGRyCisKIENvbnZlcnRJbnQzMlRvRG91YmxlIFU6RywgRDpGCiAg
ICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAK
aW5kZXggYjlmNzNjMjE3MjJlMDczNjdlYzhlZGQ2ZDkxZDVkODFkZGQwZDNhYy4uNjY3ZmYxMDkz
NWQ5MjU2NTcwNzVmYjVkNzAzZmQ3OGM4OTdkY2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKQEAgLTYwMCw2ICs2MDAsMjEgQEAgdm9pZCB0ZXN0U3ViQXJnSW1tKGludDY0X3Qg
YSwgaW50NjRfdCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkg
PT0gYSAtIGIpOwogfQogCit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZShpbnQgYSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogbmVnQXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKKyAg
ICAgICAgYXJndW1lbnQpOworICAgIFZhbHVlKiBuZWdBcmd1bWVudE1pbnVzT25lID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAgICBuZWdBcmd1bWVu
dCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBuZWdBcmd1bWVudE1pbnVzT25lKTsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSkgPT0gLWEgLSAxKTsKK30KKwogdm9pZCB0ZXN0U3ViSW1tQXJnKGludCBhLCBp
bnQgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTY2NCw2ICs2NzksMjIgQEAgdm9pZCB0
ZXN0U3ViSW1tQXJnMzIoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBiKSA9PSBhIC0gYik7CiB9CiAKK3ZvaWQgdGVzdE5lZ1ZhbHVlU3ViT25lMzIoaW50
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogbmVnQXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSwKKyAgICAgICAgYXJndW1lbnQpOworICAgIFZhbHVlKiBuZWdBcmd1bWVudE1pbnVz
T25lID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAg
ICBuZWdBcmd1bWVudCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDEpKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBuZWdBcmd1bWVudE1pbnVzT25lKTsKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gLWEgLSAxKTsKK30KKwogdm9pZCB0ZXN0U3ViQXJn
RG91YmxlKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTQxMSw2ICsxNDQy
LDE0NyBAQCB2b2lkIHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGlu
dCBjKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSBeIChiIF4g
YykpKTsKIH0KIAordm9pZCB0ZXN0Qml0Tm90QXJnKGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
Qml0Tm90LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZmZmZmZmZm
ZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbShpbnQ2NF90IGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdE5vdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDY0X3Q+KChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYSkgXiAweGZmZmZmZmZmZmZmZmZmZmYpKSkpOworfQorCit2b2lk
IHRlc3RCaXROb3RNZW0oaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAg
VmFsdWUqIG5vdExvYWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdE5vdCwgT3Jp
Z2luKCksIGxvYWQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3Rv
cmUsIE9yaWdpbigpLCBub3RMb2FkLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgaW50NjRfdCBpbnB1dCA9IGE7Cisg
ICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmaW5wdXQpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90T25Cb29s
ZWFuQW5kQnJhbmNoKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9j
ayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNhc2Ug
PSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogYXJnc0FyZUVx
dWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFyZzEs
IGFyZzIpOworICAgIFZhbHVlKiBhcmdzQXJlTm90RXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdE5vdCwgT3JpZ2luKCksIGFyZ3NBcmVFcXVhbCk7CisKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
KyAgICAgICAgYXJnc0FyZU5vdEVxdWFsLAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNh
c2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mikp
OworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC00MikpOworCisgICAgaW50MzJfdCBleHBlY3RlZFZhbHVl
ID0gKGEgIT0gYikgPyA0MiA6IC00MjsKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGEsIGIpID09IGV4cGVjdGVkVmFsdWUpOworfQorCit2b2lkIHRlc3RCaXROb3RBcmcz
MihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRO
b3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDMyX3Q+KChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90SW1t
MzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXROb3QsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpKSk7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBz
dGF0aWNfY2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZm
ZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdE1lbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2Fk
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBub3RMb2FkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXROb3QsIE9yaWdpbigpLCBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgbm90TG9hZCwgYWRkcmVzcyk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGlu
dDMyX3QgaW5wdXQgPSBhOworICAgIGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmlucHV0
KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChpbnB1dCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKHN0
YXRpY19jYXN0PHVpbnQzMl90PihhKSBeIDB4ZmZmZmZmZmYpKSkpOworfQorCit2b2lkIHRlc3RC
aXROb3RPbkJvb2xlYW5BbmRCcmFuY2gzMihpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIHRoZW5DYXNlID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxv
Y2sqIGVsc2VDYXNlID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFyZzEgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBhcmdzQXJlRXF1YWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEVxdWFsLCBPcmln
aW4oKSwgYXJnMSwgYXJnMik7CisgICAgVmFsdWUqIGFyZ3NBcmVOb3RFcXVhbCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0Tm90LCBPcmlnaW4oKSwgYXJnc0FyZUVxdWFsKTsKKwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAorICAgICAgICBhcmdzQXJlTm90RXF1YWwsCisgICAgICAgIEZyZXF1ZW50ZWRC
bG9jayh0aGVuQ2FzZSksIEZyZXF1ZW50ZWRCbG9jayhlbHNlQ2FzZSkpOworCisgICAgdGhlbkNh
c2UtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICB0aGVuQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDQyKSk7CisKKyAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIGVsc2VDYXNlLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTQyKSk7CisKKyAgICBpbnQzMl90IGV4
cGVjdGVkVmFsdWUgPSAoYSAhPSBiKSA/IDQyIDogLTQyOworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWRWYWx1ZSk7Cit9CisKIHZvaWQgdGVz
dFNobEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBA
IC00NzYyLDYgKzQ5MzQsNyBAQCBzdHJ1Y3QgT3BlcmFuZCB7CiAKIHR5cGVkZWYgT3BlcmFuZDxk
b3VibGU+IERvdWJsZU9wZXJhbmQ7CiB0eXBlZGVmIE9wZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVy
YW5kOwordHlwZWRlZiBPcGVyYW5kPGludDMyX3Q+IEludDMyT3BlcmFuZDsKIAogc3RhdGljIGNv
bnN0IHN0ZDo6YXJyYXk8RG91YmxlT3BlcmFuZCwgOT4mIGRvdWJsZU9wZXJhbmRzKCkKIHsKQEAg
LTQ3ODQsNiArNDk1NywyNyBAQCBzdGF0aWMgVmVjdG9yPEludDY0T3BlcmFuZD4gaW50NjRPcGVy
YW5kcygpCiAgICAgVmVjdG9yPEludDY0T3BlcmFuZD4gb3BlcmFuZHM7CiAgICAgZm9yIChEb3Vi
bGVPcGVyYW5kIGRvdWJsZU9wZXJhbmQgOiBkb3VibGVPcGVyYW5kcygpKQogICAgICAgICBvcGVy
YW5kcy5hcHBlbmQoeyBkb3VibGVPcGVyYW5kLm5hbWUsIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pihk
b3VibGVPcGVyYW5kLnZhbHVlKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMSIsIDEgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0xIiwgLTEgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5k
KHsgImludDY0LW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH0pOwor
ICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQ2NC1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDY0X3Q+OjptaW4oKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiaW50MzItbWF4Iiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5k
KHsgImludDMyLW1pbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpIH0pOwor
CisgICAgcmV0dXJuIG9wZXJhbmRzOworfQorCitzdGF0aWMgVmVjdG9yPEludDMyT3BlcmFuZD4g
aW50MzJPcGVyYW5kcygpCit7CisgICAgVmVjdG9yPEludDMyT3BlcmFuZD4gb3BlcmFuZHMoewor
ICAgICAgICB7ICIwIiwgMCB9LAorICAgICAgICB7ICIxIiwgMSB9LAorICAgICAgICB7ICItMSIs
IC0xIH0sCisgICAgICAgIHsgIjQyIiwgNDIgfSwKKyAgICAgICAgeyAiLTQyIiwgLTQyIH0sCisg
ICAgICAgIHsgImludDMyLW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
IH0sCisgICAgICAgIHsgImludDMyLW1pbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpIH0KKyAgICB9KTsKICAgICByZXR1cm4gb3BlcmFuZHM7CiB9CiAKQEAgLTQ5NjUsNiAr
NTE1OSw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFN1Yklt
bUFyZygxLCAyKSk7CiAgICAgUlVOKHRlc3RTdWJJbW1BcmcoMTMsIC00MikpOwogICAgIFJVTih0
ZXN0U3ViSW1tQXJnKC0xMywgNDIpKTsKKyAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25l
LCBpbnQzMk9wZXJhbmRzKCkpOwogCiAgICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMSkpOwogICAg
IFJVTih0ZXN0U3ViQXJnczMyKDEsIDIpKTsKQEAgLTQ5NzgsNiArNTE3Myw3IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFN1YkltbUFyZzMyKDEsIDIpKTsKICAg
ICBSVU4odGVzdFN1YkltbUFyZzMyKDEzLCAtNDIpKTsKICAgICBSVU4odGVzdFN1YkltbUFyZzMy
KC0xMywgNDIpKTsKKyAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3Bl
cmFuZHMoKSk7CiAKICAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0RvdWJsZSwgZG91YmxlT3BlcmFu
ZHMoKSk7CiAgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZG91YmxlT3BlcmFuZHMo
KSwgZG91YmxlT3BlcmFuZHMoKSk7CkBAIC01MDkxLDI2ICs1Mjg3LDExIEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMig2LCAx
LCA2KSk7CiAgICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoMjQsIDB4ZmZmZiwgNykp
OwogCi0gICAgUlVOKHRlc3RCaXRYb3JBcmdzKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9y
QXJncyg0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJncygxMCwgMykpOwotICAgIFJVTih0
ZXN0Qml0WG9yQXJncyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRY
b3JTYW1lQXJnKDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnKDApKTsKLSAgICBSVU4o
dGVzdEJpdFhvclNhbWVBcmcoMykpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZygweGZmZmZm
ZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJpdFhvckltbXMoNDMsIDQzKSk7Ci0gICAgUlVO
KHRlc3RCaXRYb3JJbW1zKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1zKDEwLCAzKSk7
Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1zKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBS
VU4odGVzdEJpdFhvckFyZ0ltbSg0MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ0ltbSg0
MywgMCkpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1tKDEwLCAzKSk7Ci0gICAgUlVOKHRlc3RC
aXRYb3JBcmdJbW0oNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0WG9y
SW1tQXJnKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJnKDQzLCAwKSk7Ci0gICAg
UlVOKHRlc3RCaXRYb3JJbW1BcmcoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZyg0
MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0WG9yQXJncywg
aW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0
WG9yU2FtZUFyZywgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JJ
bW1zLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0Qml0WG9yQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Qml0WG9ySW1tQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSk7CiAgICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMiwgNywgMykpOwogICAg
IFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1tKDEsIDYsIDYpKTsKICAgICBSVU4odGVzdEJp
dFhvckJpdFhvckFyZ0ltbUltbSgweGZmZmYsIDI0LCA3KSk7CkBAIC01MTQ0LDYgKzUzMjUsMTUg
QEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0
WG9yQXJnSW1tMzIoNiwgMSwgNikpOwogICAgIFJVTih0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1t
MzIoMjQsIDB4ZmZmZiwgNykpOwogCisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmcsIGludDY0
T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RJbW0sIGludDY0T3BlcmFuZHMo
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RNZW0sIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Qml0Tm90T25Cb29sZWFuQW5kQnJhbmNoLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RBcmczMiwgaW50MzJP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbTMyLCBpbnQzMk9wZXJhbmRz
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtMzIsIGludDMyT3BlcmFuZHMoKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0Qml0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIsIGludDMyT3BlcmFu
ZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKwogICAgIFJVTih0ZXN0U2hsQXJncygxLCAwKSk7CiAg
ICAgUlVOKHRlc3RTaGxBcmdzKDEsIDEpKTsKICAgICBSVU4odGVzdFNobEFyZ3MoMSwgNjIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCAxY2JkNGRlNGMyYjA5
MGUyNzQ5NTM4MGI2MThkYzFmNmE0YzYwMWY1Li40MzU0NjhjODVjNDNhOTY2ZThhOThhYjIzZDI5
ZTg0NzI1YWFhNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIz
T3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBzaGwoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6U2hsLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsgfQogICAgIExW
YWx1ZSBhU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBsZWZ0LCBjYXN0
VG9JbnQzMihyaWdodCkpOyB9CiAgICAgTFZhbHVlIGxTaHIoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
WlNociwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KLSAgICBMVmFsdWUg
Yml0Tm90KExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGJpdE5vdChMVmFs
dWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OkJpdE5vdCwgb3JpZ2luKCksIHZhbHVlKTsgfQogCiAgICAgTFZhbHVlIGluc2VydEVsZW1l
bnQoTFZhbHVlIHZlY3RvciwgTFZhbHVlIGVsZW1lbnQsIExWYWx1ZSBpbmRleCkgeyBDUkFTSCgp
OyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265934</attachid>
            <date>2015-11-19 19:54:32 -0800</date>
            <delta_ts>2015-11-20 12:23:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151474-20151119195420.patch</filename>
            <type>text/plain</type>
            <size>18924</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDQ1OGIzZTc3YTRmMTg5OGQ3NDI2OWFkYzA1M2FlZTYyOGIzMWY0Li5jY2YxYWE2YTQ4MDZjNDZj
ZTczMjVmNTIzOTAyY2FmZjJiNjAyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0xMS0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIHRvIEJpdE5vdCgpIGZvciBY
b3IodmFsdWUsIC0xKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om5vdDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bm90cV9yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojpub3RxX20pOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAg
KiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE5lZ1ZhbHVlU3ViT25lKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3ROZWdWYWx1ZVN1Yk9uZTMyKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RCaXROb3RBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE5vdEltbSk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RC
aXROb3RBcmczMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90SW1tMzIpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdE5vdE1lbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRO
b3RPbkJvb2xlYW5BbmRCcmFuY2gzMik6CisgICAgICAgIChKU0M6OkIzOjppbnQ2NE9wZXJhbmRz
KToKKyAgICAgICAgKEpTQzo6QjM6OmludDMyT3BlcmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6
cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmJpdE5vdCk6CisKIDIwMTUtMTEtMTkgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIHN1cHBvcnQgZm9yIHJlc3QgcGFyYW1ldGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCmluZGV4IGJjODQ2NWI0NzZjMjc3MjlmNDBmM2JhNTA3YjZjMWU0N2Mw
M2U2ZjEuLmMzMzUxZTI5Y2JiYTNiMzFjMzNkOWRkMjFhMDVhZjM5YTEwMDk1NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKQEAgLTQ4MSw2ICs0ODEsMTYgQEAgcHVibGljOgogICAgICAgICB4b3IzMihp
bW0sIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9yKHNyY0Rlc3QpOworICAgIH0KKworICAg
IHZvaWQgbm90MzIoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCA2YWIzNDk2YzJj
ZTY5N2VlMTdhODk2ZWZmMWQ5ZmZmZDc3OWY5YjI5Li41MzkyNTVmMTM5ZjY2N2Y1NjhiZDVhMmQ1
N2Q2MWZlMGViMWMwNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC01MDIsNiArNTAyLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBub3Q2NChSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5ub3RxX3Ioc3JjRGVzdCk7CisgICAgfQorCisgICAgdm9pZCBub3Q2NChB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhOGZkMGM2NDkxZjY5
NmU2NzYwZDlhMzc1YjAwMjU4M2FjZWNmNTFiLi4yODU3ZDUwODQ5YTc0MTQ0NzZmODdmMGQ5NmI2
N2U3MDIxMGI0ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKQEAgLTYyMiw2ICs2MjIsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9OT1QsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyNl
bmRpZgorCiAgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgZHN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggYmI5ZjQy
NDc3YTk4NzgwYTBhMzQwOTEzN2FhZWFjZTJmYWJmYzk5NS4uMzRjYzYxYjY1MzdjZTE2ODIyZTlh
ZWQ2NWUxMGJiMDc1MDY1Y2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFj
YW5CZUludGVybmFsKHZhbHVlKSAmJiB2YWx1ZSAhPSBtX3ZhbHVlKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYm9vbCBzaG91bGRJbnZlcnQgPQotICAgICAgICAgICAgICAg
ICh2YWx1ZS0+b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkg
JiYgdmFsdWUtPmNoaWxkKDApLT5yZXR1cm5zQm9vbCgpKQorICAgICAgICAgICAgICAgICh2YWx1
ZS0+b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aGFzSW50KCkgJiYgKHZh
bHVlLT5jaGlsZCgxKS0+YXNJbnQoKSAmIDEpICYmIHZhbHVlLT5jaGlsZCgwKS0+cmV0dXJuc0Jv
b2woKSkKICAgICAgICAgICAgICAgICB8fCAodmFsdWUtPm9wY29kZSgpID09IEVxdWFsICYmIHZh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpOwogICAgICAgICAgICAgaWYgKCFzaG91bGRJbnZlcnQp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzE1LDYgKzEzMTUsOCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCaXRYb3I6IHsKKyAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoLTEpKQorICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90
MzIsIE5vdDY0LCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgIGFw
cGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgQWlyOjpPb3BzLCBDb21tdXRhdGl2ZT4oCiAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAppbmRleCAzNjczYTJmZDAyM2VlZDAzOGIxOGI1MTcxMGM1NDFhZDJiOGM3Yjc1Li5lZGZi
ZGU4YjZjYTlkMWNjMDAzY2JlNTAyZmJmMDA0NmRjNmE5ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xODAsNiArMTgwLDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRl
Z2VyIEFkZChTdWIoMCwgdmFsdWUpLCAtMSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQml0
WG9yKHZhbHVlLCAtMSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKQorICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBTdWIKKyAgICAg
ICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoLTEpCisgICAgICAgICAgICAg
ICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAgICAgICAg
ICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUobV9wcm9jLmFkZDxWYWx1ZT4oQml0WG9yLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVlLT5jaGls
ZCgxKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN1YjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDE2MTgwYjYyNmFiNjk1YTBmZTI1NTM5
MWQ5NDg4MmY0NGY4YmIxMDEuLjRkYmU5NDdkMDNhYTI4NWUwY2FjYThiMjBlNWQ3MDljMjhjYmM0
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cwpAQCAtMTk1LDYgKzE5NSwxNCBAQCBYb3I2NCBVOkcsIFVEOkcKICAgICBUbXAsIEFkZHIKICAg
ICBJbW0sIFRtcAogCitOb3QzMiBVRDpHCisgICAgVG1wCisgICAgQWRkcgorCitOb3Q2NCBVRDpH
CisgICAgVG1wCisgICAgQWRkcgorCiBDb252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgogICAg
IFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmlu
ZGV4IGI5ZjczYzIxNzIyZTA3MzY3ZWM4ZWRkNmQ5MWQ1ZDgxZGRkMGQzYWMuLmJjNzU2NTIwODY0
Y2ZkM2Y3ZDFhZTBhMDkxOTczNGM1MzQ5NTkyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCkBAIC02MDAsNiArNjAwLDIxIEBAIHZvaWQgdGVzdFN1YkFyZ0ltbShpbnQ2NF90IGEs
IGludDY0X3QgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09
IGEgLSBiKTsKIH0KIAordm9pZCB0ZXN0TmVnVmFsdWVTdWJPbmUoaW50IGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIG5lZ0FyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCisgICAg
ICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVnQXJndW1lbnRNaW51c09uZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgbmVnQXJndW1lbnQs
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAx
KSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKIHZvaWQgdGVzdFN1YkltbUFyZyhpbnQgYSwgaW50
IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC02NjQsNiArNjc5LDIyIEBAIHZvaWQgdGVz
dFN1YkltbUFyZzMyKGludCBhLCBpbnQgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgYikgPT0gYSAtIGIpOwogfQogCit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZTMyKGludCBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFs
dWUqIG5lZ0FyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCksCisgICAgICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVnQXJndW1lbnRNaW51c09u
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAg
bmVnQXJndW1lbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKIHZvaWQgdGVzdFN1YkFyZ0Rv
dWJsZShkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE0MTEsNiArMTQ0Miwx
MjkgQEAgdm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoaW50IGEsIGludCBiLCBpbnQg
YykKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEgXiAoYiBeIGMp
KSk7CiB9CiAKK3ZvaWQgdGVzdEJpdE5vdEFyZyhpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJp
dFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpLCBz
dGF0aWNfY2FzdDxpbnQ2NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZm
ZmZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90SW1tKGludDY0X3QgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSkpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYSkgXiAweGZmZmZmZmZmZmZmZmZmZmYpKSkp
OworfQorCit2b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIG5vdExvYWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+
KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgIGxvYWQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBub3RMb2FkLCBhZGRyZXNzKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisg
ICAgaW50NjRfdCBpbnB1dCA9IGE7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAm
aW5wdXQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxpbnQ2NF90
Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkpKTsKK30K
Kwordm9pZCB0ZXN0Qml0Tm90QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgICAgICBh
cmd1bWVudCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYSksIHN0YXRpY19jYXN0PGludDMyX3Q+KChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkg
XiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90SW1tMzIoaW50MzJfdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSkpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgc3RhdGljX2Nh
c3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSBeIDB4ZmZmZmZmZmYpKSkpOwor
fQorCit2b2lkIHRlc3RCaXROb3RNZW0zMihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9IHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExvYWQsIGFkZHJlc3MpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBpbnQzMl90IGlucHV0ID0gYTsKKyAgICBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZp
bnB1dCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW5wdXQsIHN0YXRpY19jYXN0PGludDMyX3Q+
KChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0
ZXN0Qml0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBW
YWx1ZSogYXJnc0FyZUVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBFcXVhbCwg
T3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhcmdzQXJlTm90RXF1YWwgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgIGFy
Z3NBcmVFcXVhbCk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYXJnc0FyZU5vdEVxdWFsLAorICAg
ICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxzZUNhc2Up
KTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBl
bHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00MikpOwor
CisgICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gKGEgIT0gYikgPyA0MiA6IC00MjsKKyAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkVmFsdWUp
OworfQorCiB2b2lkIHRlc3RTaGxBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtNDc2Miw2ICs0OTE2LDcgQEAgc3RydWN0IE9wZXJhbmQgewogCiB0
eXBlZGVmIE9wZXJhbmQ8ZG91YmxlPiBEb3VibGVPcGVyYW5kOwogdHlwZWRlZiBPcGVyYW5kPGlu
dDY0X3Q+IEludDY0T3BlcmFuZDsKK3R5cGVkZWYgT3BlcmFuZDxpbnQzMl90PiBJbnQzMk9wZXJh
bmQ7CiAKIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PERvdWJsZU9wZXJhbmQsIDk+JiBkb3VibGVP
cGVyYW5kcygpCiB7CkBAIC00Nzg0LDYgKzQ5MzksMjcgQEAgc3RhdGljIFZlY3RvcjxJbnQ2NE9w
ZXJhbmQ+IGludDY0T3BlcmFuZHMoKQogICAgIFZlY3RvcjxJbnQ2NE9wZXJhbmQ+IG9wZXJhbmRz
OwogICAgIGZvciAoRG91YmxlT3BlcmFuZCBkb3VibGVPcGVyYW5kIDogZG91YmxlT3BlcmFuZHMo
KSkKICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKHsgZG91YmxlT3BlcmFuZC5uYW1lLCBiaXR3aXNl
X2Nhc3Q8aW50NjRfdD4oZG91YmxlT3BlcmFuZC52YWx1ZSkgfSk7CisgICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIjEiLCAxIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0pOworICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQ2NC1tYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptYXgoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiaW50NjQtbWluIiwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsg
ImludDMyLW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIH0pOworICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQzMi1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptaW4oKSB9KTsKKworICAgIHJldHVybiBvcGVyYW5kczsKK30KKworc3RhdGljIFZlY3Rv
cjxJbnQzMk9wZXJhbmQ+IGludDMyT3BlcmFuZHMoKQoreworICAgIFZlY3RvcjxJbnQzMk9wZXJh
bmQ+IG9wZXJhbmRzKHsKKyAgICAgICAgeyAiMCIsIDAgfSwKKyAgICAgICAgeyAiMSIsIDEgfSwK
KyAgICAgICAgeyAiLTEiLCAtMSB9LAorICAgICAgICB7ICI0MiIsIDQyIH0sCisgICAgICAgIHsg
Ii00MiIsIC00MiB9LAorICAgICAgICB7ICJpbnQzMi1tYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSB9LAorICAgICAgICB7ICJpbnQzMi1taW4iLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSB9CisgICAgfSk7CiAgICAgcmV0dXJuIG9wZXJhbmRzOwog
fQogCkBAIC00OTY1LDYgKzUxNDEsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgUlVOKHRlc3RTdWJJbW1BcmcoMSwgMikpOwogICAgIFJVTih0ZXN0U3ViSW1tQXJnKDEzLCAt
NDIpKTsKICAgICBSVU4odGVzdFN1YkltbUFyZygtMTMsIDQyKSk7CisgICAgUlVOX1VOQVJZKHRl
c3ROZWdWYWx1ZVN1Yk9uZSwgaW50MzJPcGVyYW5kcygpKTsKIAogICAgIFJVTih0ZXN0U3ViQXJn
czMyKDEsIDEpKTsKICAgICBSVU4odGVzdFN1YkFyZ3MzMigxLCAyKSk7CkBAIC00OTc4LDYgKzUx
NTUsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTdWJJbW1B
cmczMigxLCAyKSk7CiAgICAgUlVOKHRlc3RTdWJJbW1BcmczMigxMywgLTQyKSk7CiAgICAgUlVO
KHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7CisgICAgUlVOX1VOQVJZKHRlc3ROZWdWYWx1ZVN1
Yk9uZTMyLCBpbnQ2NE9wZXJhbmRzKCkpOwogCiAgICAgUlVOX1VOQVJZKHRlc3RTdWJBcmdEb3Vi
bGUsIGRvdWJsZU9wZXJhbmRzKCkpOwogICAgIFJVTl9CSU5BUlkodGVzdFN1YkFyZ3NEb3VibGUs
IGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwpAQCAtNTA5MSwyNiArNTI2OSwx
MSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RCaXRPckltbUJp
dE9yQXJnSW1tMzIoNiwgMSwgNikpOwogICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbTMy
KDI0LCAweGZmZmYsIDcpKTsKIAotICAgIFJVTih0ZXN0Qml0WG9yQXJncyg0MywgNDMpKTsKLSAg
ICBSVU4odGVzdEJpdFhvckFyZ3MoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MoMTAs
IDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwot
ICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZyg0MykpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFy
ZygwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnKDMpKTsKLSAgICBSVU4odGVzdEJpdFhv
clNhbWVBcmcoMHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1zKDQz
LCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tcyg0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0
WG9ySW1tcygxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tcyg0MiwgMHhmZmZmZmZmZmZm
ZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0oNDMsIDQzKSk7Ci0gICAgUlVOKHRl
c3RCaXRYb3JBcmdJbW0oNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ0ltbSgxMCwgMykp
OwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1tKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAg
ICBSVU4odGVzdEJpdFhvckltbUFyZyg0MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFy
Zyg0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJnKDEwLCAzKSk7Ci0gICAgUlVOKHRl
c3RCaXRYb3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTl9CSU5BUlko
dGVzdEJpdFhvckFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEJpdFhvclNhbWVBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0Qml0WG9ySW1tcywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9w
ZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRPcGVyYW5k
cygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJnSW1tSW1t
KDIsIDcsIDMpKTsKICAgICBSVU4odGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2LCA2KSk7
CiAgICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykpOwpAQCAt
NTE0NCw2ICs1MzA3LDE0IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKDYsIDEsIDYpKTsKICAgICBSVU4odGVzdEJpdFhv
ckltbUJpdFhvckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKIAorICAgIFJVTl9VTkFSWSh0ZXN0
Qml0Tm90QXJnLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90SW1t
LCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtLCBpbnQ2NE9w
ZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90QXJnMzIsIGludDMyT3BlcmFuZHMo
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RJbW0zMiwgaW50MzJPcGVyYW5kcygpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdEJpdE5vdE1lbTMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyLCBpbnQzMk9wZXJhbmRzKCksIGlu
dDMyT3BlcmFuZHMoKSk7CisKICAgICBSVU4odGVzdFNobEFyZ3MoMSwgMCkpOwogICAgIFJVTih0
ZXN0U2hsQXJncygxLCAxKSk7CiAgICAgUlVOKHRlc3RTaGxBcmdzKDEsIDYyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggMWNiZDRkZTRjMmIwOTBlMjc0OTUz
ODBiNjE4ZGMxZjZhNGM2MDFmNS4uYjJhMzdhODBhMTYxMjE4ODM0NjNlYTA1ZTc2NzAzY2IwOTU0
MDcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAtMTQ1LDcg
KzE0NSw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgc2hsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNo
bCwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KICAgICBMVmFsdWUgYVNo
cihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIo
cmlnaHQpKTsgfQogICAgIExWYWx1ZSBsU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlpTaHIsIG9y
aWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOyB9Ci0gICAgTFZhbHVlIGJpdE5vdChM
VmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBiaXROb3QoTFZhbHVlKTsKIAog
ICAgIExWYWx1ZSBpbnNlcnRFbGVtZW50KExWYWx1ZSB2ZWN0b3IsIExWYWx1ZSBlbGVtZW50LCBM
VmFsdWUgaW5kZXgpIHsgQ1JBU0goKTsgfQogCkBAIC00NzUsNiArNDc1LDEzIEBAIGlubGluZSB2
b2lkIE91dHB1dDo6YWRkSW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1ZUZyb21CbG9jayB2
YWx1ZSwgUGFyYW1zLi4uCiAgICAgYWRkSW5jb21pbmdUb1BoaShwaGksIHRoZVJlc3QuLi4pOwog
fQogCitpbmxpbmUgTFZhbHVlIE91dHB1dDo6Yml0Tm90KExWYWx1ZSB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0WG9yLCBv
cmlnaW4oKSwKKyAgICAgICAgdmFsdWUsCisgICAgICAgIG1fYmxvY2stPmFwcGVuZEludENvbnN0
YW50KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlLT50eXBlKCksIC0xKSk7Cit9CisKIGlubGluZSBM
VmFsdWUgT3V0cHV0OjpiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gaW50NjQgfHwgdHlwZSA9PSBkb3VibGVUeXBlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265979</attachid>
            <date>2015-11-20 12:23:52 -0800</date>
            <delta_ts>2015-11-20 13:07:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151474-20151120122339.patch</filename>
            <type>text/plain</type>
            <size>18967</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDQ1OGIzZTc3YTRmMTg5OGQ3NDI2OWFkYzA1M2FlZTYyOGIzMWY0Li5jY2YxYWE2YTQ4MDZjNDZj
ZTczMjVmNTIzOTAyY2FmZjJiNjAyYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0xMS0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIHRvIEJpdE5vdCgpIGZvciBY
b3IodmFsdWUsIC0xKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om5vdDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bm90cV9yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojpub3RxX20pOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAg
KiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE5lZ1ZhbHVlU3ViT25lKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3ROZWdWYWx1ZVN1Yk9uZTMyKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RCaXROb3RBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE5vdEltbSk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RC
aXROb3RBcmczMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90SW1tMzIpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdE5vdE1lbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRO
b3RPbkJvb2xlYW5BbmRCcmFuY2gzMik6CisgICAgICAgIChKU0M6OkIzOjppbnQ2NE9wZXJhbmRz
KToKKyAgICAgICAgKEpTQzo6QjM6OmludDMyT3BlcmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6
cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmJpdE5vdCk6CisKIDIwMTUtMTEtMTkgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIHN1cHBvcnQgZm9yIHJlc3QgcGFyYW1ldGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCmluZGV4IGJjODQ2NWI0NzZjMjc3MjlmNDBmM2JhNTA3YjZjMWU0N2Mw
M2U2ZjEuLmMzMzUxZTI5Y2JiYTNiMzFjMzNkOWRkMjFhMDVhZjM5YTEwMDk1NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKQEAgLTQ4MSw2ICs0ODEsMTYgQEAgcHVibGljOgogICAgICAgICB4b3IzMihp
bW0sIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9yKHNyY0Rlc3QpOworICAgIH0KKworICAg
IHZvaWQgbm90MzIoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCA2YWIzNDk2YzJj
ZTY5N2VlMTdhODk2ZWZmMWQ5ZmZmZDc3OWY5YjI5Li41MzkyNTVmMTM5ZjY2N2Y1NjhiZDVhMmQ1
N2Q2MWZlMGViMWMwNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC01MDIsNiArNTAyLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBub3Q2NChSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5ub3RxX3Ioc3JjRGVzdCk7CisgICAgfQorCisgICAgdm9pZCBub3Q2NChB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhOGZkMGM2NDkxZjY5
NmU2NzYwZDlhMzc1YjAwMjU4M2FjZWNmNTFiLi4yODU3ZDUwODQ5YTc0MTQ0NzZmODdmMGQ5NmI2
N2U3MDIxMGI0ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKQEAgLTYyMiw2ICs2MjIsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9OT1QsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyNl
bmRpZgorCiAgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgZHN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggYmI5ZjQy
NDc3YTk4NzgwYTBhMzQwOTEzN2FhZWFjZTJmYWJmYzk5NS4uMDNjZThlZjYwMDU1MTZhZjRhMDY3
YWQ5YzljZmI5ZTZlYzYyYmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFj
YW5CZUludGVybmFsKHZhbHVlKSAmJiB2YWx1ZSAhPSBtX3ZhbHVlKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYm9vbCBzaG91bGRJbnZlcnQgPQotICAgICAgICAgICAgICAg
ICh2YWx1ZS0+b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkg
JiYgdmFsdWUtPmNoaWxkKDApLT5yZXR1cm5zQm9vbCgpKQorICAgICAgICAgICAgICAgICh2YWx1
ZS0+b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aGFzSW50KCkgJiYgKHZh
bHVlLT5jaGlsZCgxKS0+YXNJbnQoKSAmIDEpICYmIHZhbHVlLT5jaGlsZCgwKS0+cmV0dXJuc0Jv
b2woKSkKICAgICAgICAgICAgICAgICB8fCAodmFsdWUtPm9wY29kZSgpID09IEVxdWFsICYmIHZh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpOwogICAgICAgICAgICAgaWYgKCFzaG91bGRJbnZlcnQp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzE1LDYgKzEzMTUsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQml0WG9yOiB7CisgICAgICAgICAgICBpZiAobV92
YWx1ZS0+Y2hpbGQoMSktPmlzSW50KC0xKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8
Tm90MzIsIE5vdDY0LCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3Iz
MiwgWG9yNjQsIEFpcjo6T29wcywgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFs
dWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggMzY3
M2EyZmQwMjNlZWQwMzhiMThiNTE3MTBjNTQxYWQyYjhjN2I3NS4uZWRmYmRlOGI2Y2E5ZDFjYzAw
M2NiZTUwMmZiZjAwNDZkYzZhOTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMTgwLDYgKzE4MCwxNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogSW50ZWdlciBBZGQoU3ViKDAs
IHZhbHVlKSwgLTEpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdFhvcih2YWx1ZSwgLTEp
CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNJbnRlZ2VyKCkKKyAgICAgICAgICAgICAgICAm
JiBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gU3ViCisgICAgICAgICAgICAgICAgJiYg
bV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KC0xKQorICAgICAgICAgICAgICAgICYmIG1fdmFsdWUt
PmNoaWxkKDApLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNl
V2l0aE5ld1ZhbHVlKG1fcHJvYy5hZGQ8VmFsdWU+KEJpdFhvciwgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSwgbV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBTdWI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcwppbmRleCAxNjE4MGI2MjZhYjY5NWEwZmUyNTUzOTFkOTQ4ODJmNDRmOGJi
MTAxLi40ZGJlOTQ3ZDAzYWEyODVlMGNhY2E4YjIwZTVkNzA5YzI4Y2JjNGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTE5NSw2ICsx
OTUsMTQgQEAgWG9yNjQgVTpHLCBVRDpHCiAgICAgVG1wLCBBZGRyCiAgICAgSW1tLCBUbXAKIAor
Tm90MzIgVUQ6RworICAgIFRtcAorICAgIEFkZHIKKworTm90NjQgVUQ6RworICAgIFRtcAorICAg
IEFkZHIKKwogQ29udmVydEludDMyVG9Eb3VibGUgVTpHLCBEOkYKICAgICBUbXAsIFRtcAogICAg
IEFkZHIsIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBiOWY3M2MyMTcy
MmUwNzM2N2VjOGVkZDZkOTFkNWQ4MWRkZDBkM2FjLi5iYzc1NjUyMDg2NGNmZDNmN2QxYWUwYTA5
MTk3MzRjNTM0OTU5MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtNjAw
LDYgKzYwMCwyMSBAQCB2b2lkIHRlc3RTdWJBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCiAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSBhIC0gYik7CiB9CiAK
K3ZvaWQgdGVzdE5lZ1ZhbHVlU3ViT25lKGludCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBuZWdBcmd1bWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAgICBhcmd1bWVudCk7
CisgICAgVmFsdWUqIG5lZ0FyZ3VtZW50TWludXNPbmUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIG5lZ0FyZ3VtZW50LAorICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIG5lZ0FyZ3Vt
ZW50TWludXNPbmUpOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAt
YSAtIDEpOworfQorCiB2b2lkIHRlc3RTdWJJbW1BcmcoaW50IGEsIGludCBiKQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtNjY0LDYgKzY3OSwyMiBAQCB2b2lkIHRlc3RTdWJJbW1BcmczMihp
bnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IGEg
LSBiKTsKIH0KIAordm9pZCB0ZXN0TmVnVmFsdWVTdWJPbmUzMihpbnQgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBuZWdBcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApLAorICAgICAg
ICBhcmd1bWVudCk7CisgICAgVmFsdWUqIG5lZ0FyZ3VtZW50TWludXNPbmUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksCisgICAgICAgIG5lZ0FyZ3VtZW50LAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIG5lZ0FyZ3VtZW50TWludXNPbmUpOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCBhKSA9PSAtYSAtIDEpOworfQorCiB2b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91YmxlIGEp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xNDExLDYgKzE0NDIsMTI5IEBAIHZvaWQgdGVz
dEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhIF4gKGIgXiBjKSkpOwogfQogCit2b2lk
IHRlc3RCaXROb3RBcmcoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIC0xKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZmZmZmZmZmZmZmZikpKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbShpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdFhv
ciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pigoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0
ZXN0Qml0Tm90TWVtKGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkID0gcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZh
bHVlKiBub3RMb2FkID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRYb3IsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgLTEpLAorICAgICAgICBsb2FkKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgbm90TG9hZCwgYWRkcmVzcyk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGludDY0X3QgaW5w
dXQgPSBhOworICAgIGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmlucHV0KTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChpbnB1dCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihhKSBeIDB4ZmZmZmZmZmZmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJp
dE5vdEFyZzMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEpLCBzdGF0
aWNfY2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikp
KSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdEltbTMyKGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
Qml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDMyX3Q+KChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0
Qml0Tm90TWVtMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQgPSByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFs
dWUqIG5vdExvYWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAtMSksCisgICAgICAgIGxvYWQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCBub3RMb2FkLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgaW50MzJfdCBpbnB1
dCA9IGE7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmaW5wdXQpOworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxpbnQzMl90Pigoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGEpIF4gMHhmZmZmZmZmZikpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE5vdE9uQm9v
bGVhbkFuZEJyYW5jaDMyKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNC
bG9jayogdGhlbkNhc2UgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZWxzZUNh
c2UgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZ3NBcmVF
cXVhbCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRXF1YWwsIE9yaWdpbigpLCBhcmcx
LCBhcmcyKTsKKyAgICBWYWx1ZSogYXJnc0FyZU5vdEVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICBhcmdzQXJlRXF1YWwpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIGFyZ3NBcmVOb3RFcXVhbCwKKyAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrKHRoZW5DYXNlKSwgRnJlcXVlbnRlZEJsb2NrKGVsc2VDYXNlKSk7CisKKyAgICB0aGVu
Q2FzZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgNDIpKTsKKworICAgIGVsc2VDYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtNDIpKTsKKworICAgIGludDMyX3Qg
ZXhwZWN0ZWRWYWx1ZSA9IChhICE9IGIpID8gNDIgOiAtNDI7CisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBhLCBiKSA9PSBleHBlY3RlZFZhbHVlKTsKK30KKwogdm9pZCB0
ZXN0U2hsQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsK
QEAgLTQ3NjIsNiArNDkxNiw3IEBAIHN0cnVjdCBPcGVyYW5kIHsKIAogdHlwZWRlZiBPcGVyYW5k
PGRvdWJsZT4gRG91YmxlT3BlcmFuZDsKIHR5cGVkZWYgT3BlcmFuZDxpbnQ2NF90PiBJbnQ2NE9w
ZXJhbmQ7Cit0eXBlZGVmIE9wZXJhbmQ8aW50MzJfdD4gSW50MzJPcGVyYW5kOwogCiBzdGF0aWMg
Y29uc3Qgc3RkOjphcnJheTxEb3VibGVPcGVyYW5kLCA5PiYgZG91YmxlT3BlcmFuZHMoKQogewpA
QCAtNDc4NCw2ICs0OTM5LDI3IEBAIHN0YXRpYyBWZWN0b3I8SW50NjRPcGVyYW5kPiBpbnQ2NE9w
ZXJhbmRzKCkKICAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVyYW5kczsKICAgICBmb3IgKERv
dWJsZU9wZXJhbmQgZG91YmxlT3BlcmFuZCA6IGRvdWJsZU9wZXJhbmRzKCkpCiAgICAgICAgIG9w
ZXJhbmRzLmFwcGVuZCh7IGRvdWJsZU9wZXJhbmQubmFtZSwgYml0d2lzZV9jYXN0PGludDY0X3Q+
KGRvdWJsZU9wZXJhbmQudmFsdWUpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxIiwgMSB9
KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEiLCAtMSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiaW50NjQtbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgfSk7
CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImludDY0LW1pbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQzMi1tYXgiLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBl
bmQoeyAiaW50MzItbWluIiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkgfSk7
CisKKyAgICByZXR1cm4gb3BlcmFuZHM7Cit9CisKK3N0YXRpYyBWZWN0b3I8SW50MzJPcGVyYW5k
PiBpbnQzMk9wZXJhbmRzKCkKK3sKKyAgICBWZWN0b3I8SW50MzJPcGVyYW5kPiBvcGVyYW5kcyh7
CisgICAgICAgIHsgIjAiLCAwIH0sCisgICAgICAgIHsgIjEiLCAxIH0sCisgICAgICAgIHsgIi0x
IiwgLTEgfSwKKyAgICAgICAgeyAiNDIiLCA0MiB9LAorICAgICAgICB7ICItNDIiLCAtNDIgfSwK
KyAgICAgICAgeyAiaW50MzItbWF4Iiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkgfSwKKyAgICAgICAgeyAiaW50MzItbWluIiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkgfQorICAgIH0pOwogICAgIHJldHVybiBvcGVyYW5kczsKIH0KIApAQCAtNDk2NSw2
ICs1MTQxLDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0U3Vi
SW1tQXJnKDEsIDIpKTsKICAgICBSVU4odGVzdFN1YkltbUFyZygxMywgLTQyKSk7CiAgICAgUlVO
KHRlc3RTdWJJbW1BcmcoLTEzLCA0MikpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVnVmFsdWVTdWJP
bmUsIGludDMyT3BlcmFuZHMoKSk7CiAKICAgICBSVU4odGVzdFN1YkFyZ3MzMigxLCAxKSk7CiAg
ICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMikpOwpAQCAtNDk3OCw2ICs1MTU1LDcgQEAgdm9pZCBy
dW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0U3ViSW1tQXJnMzIoMSwgMikpOwog
ICAgIFJVTih0ZXN0U3ViSW1tQXJnMzIoMTMsIC00MikpOwogICAgIFJVTih0ZXN0U3ViSW1tQXJn
MzIoLTEzLCA0MikpOworICAgIFJVTl9VTkFSWSh0ZXN0TmVnVmFsdWVTdWJPbmUzMiwgaW50NjRP
cGVyYW5kcygpKTsKIAogICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRG91YmxlLCBkb3VibGVPcGVy
YW5kcygpKTsKICAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdzRG91YmxlLCBkb3VibGVPcGVyYW5k
cygpLCBkb3VibGVPcGVyYW5kcygpKTsKQEAgLTUwOTEsMjYgKzUyNjksMTEgQEAgdm9pZCBydW4o
Y29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbTMyKDYs
IDEsIDYpKTsKICAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMigyNCwgMHhmZmZmLCA3
KSk7CiAKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRY
b3JBcmdzKDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdzKDEwLCAzKSk7Ci0gICAgUlVO
KHRlc3RCaXRYb3JBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKLSAgICBSVU4odGVzdEJp
dFhvclNhbWVBcmcoNDMpKTsKLSAgICBSVU4odGVzdEJpdFhvclNhbWVBcmcoMCkpOwotICAgIFJV
Tih0ZXN0Qml0WG9yU2FtZUFyZygzKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnKDB4ZmZm
ZmZmZmZmZmZmZmZmZikpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tcyg0MywgNDMpKTsKLSAgICBS
VU4odGVzdEJpdFhvckltbXMoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckltbXMoMTAsIDMp
KTsKLSAgICBSVU4odGVzdEJpdFhvckltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwotICAg
IFJVTih0ZXN0Qml0WG9yQXJnSW1tKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1t
KDQzLCAwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0oMTAsIDMpKTsKLSAgICBSVU4odGVz
dEJpdFhvckFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRY
b3JJbW1BcmcoNDMsIDQzKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJbW1BcmcoNDMsIDApKTsKLSAg
ICBSVU4odGVzdEJpdFhvckltbUFyZygxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJn
KDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JBcmdz
LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RC
aXRYb3JTYW1lQXJnLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhv
ckltbXMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3RCaXRYb3JBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3RCaXRYb3JJbW1BcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVy
YW5kcygpKTsKICAgICBSVU4odGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgyLCA3LCAzKSk7CiAg
ICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMSwgNiwgNikpOwogICAgIFJVTih0ZXN0
Qml0WG9yQml0WG9yQXJnSW1tSW1tKDB4ZmZmZiwgMjQsIDcpKTsKQEAgLTUxNDQsNiArNTMwNywx
NCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RCaXRYb3JJbW1C
aXRYb3JBcmdJbW0zMig2LCAxLCA2KSk7CiAgICAgUlVOKHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJ
bW0zMigyNCwgMHhmZmZmLCA3KSk7CiAKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEFyZywgaW50
NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdEltbSwgaW50NjRPcGVyYW5k
cygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdE1lbSwgaW50NjRPcGVyYW5kcygpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdEJpdE5vdEFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9V
TkFSWSh0ZXN0Qml0Tm90SW1tMzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RCaXROb3RNZW0zMiwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRO
b3RPbkJvb2xlYW5BbmRCcmFuY2gzMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OworCiAgICAgUlVOKHRlc3RTaGxBcmdzKDEsIDApKTsKICAgICBSVU4odGVzdFNobEFyZ3MoMSwg
MSkpOwogICAgIFJVTih0ZXN0U2hsQXJncygxLCA2MikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExCM091dHB1dC5oCmluZGV4IDFjYmQ0ZGU0YzJiMDkwZTI3NDk1MzgwYjYxOGRjMWY2YTRj
NjAxZjUuLmIyYTM3YTgwYTE2MTIxODgzNDYzZWEwNWU3NjcwM2NiMDk1NDA3MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJs
aWM6CiAgICAgTFZhbHVlIHNobChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTaGwsIG9yaWdpbigpLCBs
ZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOyB9CiAgICAgTFZhbHVlIGFTaHIoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6U1Nociwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KICAg
ICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVmdCwg
Y2FzdFRvSW50MzIocmlnaHQpKTsgfQotICAgIExWYWx1ZSBiaXROb3QoTFZhbHVlIHZhbHVlKSB7
IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgYml0Tm90KExWYWx1ZSk7CiAKICAgICBMVmFsdWUgaW5z
ZXJ0RWxlbWVudChMVmFsdWUgdmVjdG9yLCBMVmFsdWUgZWxlbWVudCwgTFZhbHVlIGluZGV4KSB7
IENSQVNIKCk7IH0KIApAQCAtNDc1LDYgKzQ3NSwxMyBAQCBpbmxpbmUgdm9pZCBPdXRwdXQ6OmFk
ZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwgVmFsdWVGcm9tQmxvY2sgdmFsdWUsIFBhcmFtcy4u
LgogICAgIGFkZEluY29taW5nVG9QaGkocGhpLCB0aGVSZXN0Li4uKTsKIH0KIAoraW5saW5lIExW
YWx1ZSBPdXRwdXQ6OmJpdE5vdChMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdFhvciwgb3JpZ2luKCksCisgICAg
ICAgIHZhbHVlLAorICAgICAgICBtX2Jsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9y
aWdpbigpLCB2YWx1ZS0+dHlwZSgpLCAtMSkpOworfQorCiBpbmxpbmUgTFZhbHVlIE91dHB1dDo6
Yml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0
eXBlLCB0eXBlID09IGludDY0IHx8IHR5cGUgPT0gZG91YmxlVHlwZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265981</attachid>
            <date>2015-11-20 13:07:38 -0800</date>
            <delta_ts>2015-11-20 14:07:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151474-20151120130726.patch</filename>
            <type>text/plain</type>
            <size>19671</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDQ1OGIzZTc3YTRmMTg5OGQ3NDI2OWFkYzA1M2FlZTYyOGIzMWY0Li4zNjlhNjM4YTA4NmEyZGQz
NjkwZDVkZmNkM2E1Y2Y3MWQ2YjhjOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0xMS0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIHRvIEJpdE5vdCgpIGZvciBY
b3IodmFsdWUsIC0xKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om5vdDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
Om5vdDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6bm90cV9yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpu
b3RxX20pOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5n
dGguY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBi
My90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE5lZ1ZhbHVlU3ViT25lKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3ROZWdWYWx1ZVN1Yk9uZTMyKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RCaXROb3RBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE5vdEltbSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRO
b3RBcmczMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0Tm90SW1tMzIpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdEJpdE5vdE1lbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXROb3RP
bkJvb2xlYW5BbmRCcmFuY2gzMik6CisgICAgICAgIChKU0M6OkIzOjppbnQ2NE9wZXJhbmRzKToK
KyAgICAgICAgKEpTQzo6QjM6OmludDMyT3BlcmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6cnVu
KToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmJpdE5vdCk6CisKIDIwMTUtMTEtMTkgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0VTNl0gQWRkIHN1cHBvcnQgZm9yIHJlc3QgcGFyYW1ldGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCmluZGV4IGJjODQ2NWI0NzZjMjc3MjlmNDBmM2JhNTA3YjZjMWU0N2MwM2U2
ZjEuLmMzMzUxZTI5Y2JiYTNiMzFjMzNkOWRkMjFhMDVhZjM5YTEwMDk1NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKQEAgLTQ4MSw2ICs0ODEsMTYgQEAgcHVibGljOgogICAgICAgICB4b3IzMihpbW0s
IGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9yKHNyY0Rlc3QpOworICAgIH0KKworICAgIHZv
aWQgbm90MzIoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCA2YWIzNDk2YzJjZTY5
N2VlMTdhODk2ZWZmMWQ5ZmZmZDc3OWY5YjI5Li41MzkyNTVmMTM5ZjY2N2Y1NjhiZDVhMmQ1N2Q2
MWZlMGViMWMwNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC01MDIsNiArNTAyLDE2IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBub3Q2NChSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5ub3RxX3Ioc3JjRGVzdCk7CisgICAgfQorCisgICAgdm9pZCBub3Q2NChBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFf
bXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhOGZkMGM2NDkxZjY5NmU2
NzYwZDlhMzc1YjAwMjU4M2FjZWNmNTFiLi4yODU3ZDUwODQ5YTc0MTQ0NzZmODdmMGQ5NmI2N2U3
MDIxMGI0ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKQEAgLTYyMiw2ICs2MjIsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KIAorI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdS
T1VQM19PUF9OT1QsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgZHN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggYmI5ZjQyNDc3
YTk4NzgwYTBhMzQwOTEzN2FhZWFjZTJmYWJmYzk5NS4uMDAxNWQ0NjVhOGI3NTlhYTI5NTkzYTE0
MmZkZTE3YThkYWY5ZDcwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFjYW5C
ZUludGVybmFsKHZhbHVlKSAmJiB2YWx1ZSAhPSBtX3ZhbHVlKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgYm9vbCBzaG91bGRJbnZlcnQgPQotICAgICAgICAgICAgICAgICh2
YWx1ZS0+b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkgJiYg
dmFsdWUtPmNoaWxkKDApLT5yZXR1cm5zQm9vbCgpKQorICAgICAgICAgICAgICAgICh2YWx1ZS0+
b3Bjb2RlKCkgPT0gQml0WG9yICYmIHZhbHVlLT5jaGlsZCgxKS0+aGFzSW50KCkgJiYgKHZhbHVl
LT5jaGlsZCgxKS0+YXNJbnQoKSAmIDEpICYmIHZhbHVlLT5jaGlsZCgwKS0+cmV0dXJuc0Jvb2wo
KSkKICAgICAgICAgICAgICAgICB8fCAodmFsdWUtPm9wY29kZSgpID09IEVxdWFsICYmIHZhbHVl
LT5jaGlsZCgxKS0+aXNJbnQoMCkpOwogICAgICAgICAgICAgaWYgKCFzaG91bGRJbnZlcnQpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzE1LDYgKzEzMTUsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgQml0WG9yOiB7CisgICAgICAgICAgICBpZiAobV92YWx1
ZS0+Y2hpbGQoMSktPmlzSW50KC0xKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90
MzIsIE5vdDY0LCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwg
WG9yNjQsIEFpcjo6T29wcywgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUt
PmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MzcwLDYgKzEzNzQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9
IHRyeUFwcGVuZFN0b3JlQmluT3A8QW5kMzIsIEFuZDY0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RvcmUtPmNoaWxkKDApLCB2YWx1ZVRvU3RvcmUtPmNo
aWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBCaXRYb3I6CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVRvU3RvcmUtPmNoaWxkKDEp
LT5pc0ludCgtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnlBcHBl
bmRTdG9yZVVuT3A8Tm90MzIsIE5vdDY0Pih2YWx1ZVRvU3RvcmUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnlBcHBlbmRTdG9yZUJpbk9wPFhvcjMyLCBYb3I2NCwg
Q29tbXV0YXRpdmU+KAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3JlLT5jaGls
ZCgwKSwgdmFsdWVUb1N0b3JlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAppbmRleCAzNjczYTJmZDAyM2VlZDAzOGIxOGI1MTcxMGM1NDFhZDJiOGM3Yjc1
Li5lZGZiZGU4YjZjYTlkMWNjMDAzY2JlNTAyZmJmMDA0NmRjNmE5ODkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xODAsNiArMTgwLDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlz
OiBJbnRlZ2VyIEFkZChTdWIoMCwgdmFsdWUpLCAtMSkKKyAgICAgICAgICAgIC8vIEludG8gdGhp
czogQml0WG9yKHZhbHVlLCAtMSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIo
KQorICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBTdWIK
KyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoLTEpCisgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAg
ICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUobV9wcm9jLmFkZDxWYWx1ZT4oQml0WG9y
LCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVl
LT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN1YjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDE2MTgwYjYyNmFiNjk1YTBm
ZTI1NTM5MWQ5NDg4MmY0NGY4YmIxMDEuLjRkYmU5NDdkMDNhYTI4NWUwY2FjYThiMjBlNWQ3MDlj
MjhjYmM0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwpAQCAtMTk1LDYgKzE5NSwxNCBAQCBYb3I2NCBVOkcsIFVEOkcKICAgICBUbXAsIEFk
ZHIKICAgICBJbW0sIFRtcAogCitOb3QzMiBVRDpHCisgICAgVG1wCisgICAgQWRkcgorCitOb3Q2
NCBVRDpHCisgICAgVG1wCisgICAgQWRkcgorCiBDb252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6
RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCmluZGV4IGI5ZjczYzIxNzIyZTA3MzY3ZWM4ZWRkNmQ5MWQ1ZDgxZGRkMGQzYWMuLmJjNzU2
NTIwODY0Y2ZkM2Y3ZDFhZTBhMDkxOTczNGM1MzQ5NTkyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCkBAIC02MDAsNiArNjAwLDIxIEBAIHZvaWQgdGVzdFN1YkFyZ0ltbShpbnQ2
NF90IGEsIGludDY0X3QgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IGEpID09IGEgLSBiKTsKIH0KIAordm9pZCB0ZXN0TmVnVmFsdWVTdWJPbmUoaW50IGEpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIG5l
Z0FyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCks
CisgICAgICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVnQXJndW1lbnRNaW51c09uZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgbmVnQXJn
dW1lbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCAxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKIHZvaWQgdGVzdFN1YkltbUFyZyhpbnQg
YSwgaW50IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC02NjQsNiArNjc5LDIyIEBAIHZv
aWQgdGVzdFN1YkltbUFyZzMyKGludCBhLCBpbnQgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgYikgPT0gYSAtIGIpOwogfQogCit2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZTMy
KGludCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIG5lZ0FyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCksCisgICAgICAgIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogbmVnQXJndW1lbnRN
aW51c09uZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAg
ICAgICAgbmVnQXJndW1lbnQsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbmVnQXJndW1lbnRNaW51c09uZSk7CisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IC1hIC0gMSk7Cit9CisKIHZvaWQgdGVzdFN1
YkFyZ0RvdWJsZShkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE0MTEsNiAr
MTQ0MiwxMjkgQEAgdm9pZCB0ZXN0Qml0WG9ySW1tQml0WG9yQXJnSW1tMzIoaW50IGEsIGludCBi
LCBpbnQgYykKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEgXiAo
YiBeIGMpKSk7CiB9CiAKK3ZvaWQgdGVzdEJpdE5vdEFyZyhpbnQ2NF90IGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgLTEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IGEpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhm
ZmZmZmZmZmZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90SW1tKGludDY0X3QgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSkpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSksIHN0YXRpY19j
YXN0PGludDY0X3Q+KChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYSkgXiAweGZmZmZmZmZmZmZmZmZm
ZmYpKSkpOworfQorCit2b2lkIHRlc3RCaXROb3RNZW0oaW50NjRfdCBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWQg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIG5vdExvYWQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAgIGxvYWQpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBub3RMb2FkLCBhZGRy
ZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgaW50NjRfdCBpbnB1dCA9IGE7CisgICAgY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jLCAmaW5wdXQpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGlucHV0LCBzdGF0aWNfY2FzdDxp
bnQ2NF90Pigoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEpIF4gMHhmZmZmZmZmZmZmZmZmZmZmKSkp
KTsKK30KKwordm9pZCB0ZXN0Qml0Tm90QXJnMzIoaW50MzJfdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAgICAg
ICAgICBhcmd1bWVudCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYSksIHN0YXRpY19jYXN0PGludDMyX3Q+KChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0Tm90SW1tMzIoaW50MzJf
dCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCaXRYb3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSkpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSBeIDB4ZmZmZmZmZmYp
KSkpOworfQorCit2b2lkIHRlc3RCaXROb3RNZW0zMihpbnQzMl90IGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZCA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogbm90TG9hZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0WG9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIC0xKSwKKyAgICAgICAgbG9hZCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIG5vdExvYWQsIGFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
CisKKyAgICBpbnQzMl90IGlucHV0ID0gYTsKKyAgICBjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZpbnB1dCk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW5wdXQsIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgXiAweGZmZmZmZmZmKSkpKTsKK30KKwor
dm9pZCB0ZXN0Qml0Tm90T25Cb29sZWFuQW5kQnJhbmNoMzIoaW50NjRfdCBhLCBpbnQ2NF90IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0aGVuQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBlbHNlQ2FzZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogYXJnc0FyZUVxdWFsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBF
cXVhbCwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIFZhbHVlKiBhcmdzQXJlTm90RXF1YWwg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdFhvciwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAtMSksCisgICAg
ICAgIGFyZ3NBcmVFcXVhbCk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgYXJnc0FyZU5vdEVxdWFs
LAorICAgICAgICBGcmVxdWVudGVkQmxvY2sodGhlbkNhc2UpLCBGcmVxdWVudGVkQmxvY2soZWxz
ZUNhc2UpKTsKKworICAgIHRoZW5DYXNlLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgdGhlbkNhc2UtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpOworCisgICAgZWxzZUNhc2UtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICBlbHNlQ2FzZS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIC00
MikpOworCisgICAgaW50MzJfdCBleHBlY3RlZFZhbHVlID0gKGEgIT0gYikgPyA0MiA6IC00MjsK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVk
VmFsdWUpOworfQorCiB2b2lkIHRlc3RTaGxBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNDc2Miw2ICs0OTE2LDcgQEAgc3RydWN0IE9wZXJhbmQg
ewogCiB0eXBlZGVmIE9wZXJhbmQ8ZG91YmxlPiBEb3VibGVPcGVyYW5kOwogdHlwZWRlZiBPcGVy
YW5kPGludDY0X3Q+IEludDY0T3BlcmFuZDsKK3R5cGVkZWYgT3BlcmFuZDxpbnQzMl90PiBJbnQz
Mk9wZXJhbmQ7CiAKIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PERvdWJsZU9wZXJhbmQsIDk+JiBk
b3VibGVPcGVyYW5kcygpCiB7CkBAIC00Nzg0LDYgKzQ5MzksMjcgQEAgc3RhdGljIFZlY3RvcjxJ
bnQ2NE9wZXJhbmQ+IGludDY0T3BlcmFuZHMoKQogICAgIFZlY3RvcjxJbnQ2NE9wZXJhbmQ+IG9w
ZXJhbmRzOwogICAgIGZvciAoRG91YmxlT3BlcmFuZCBkb3VibGVPcGVyYW5kIDogZG91YmxlT3Bl
cmFuZHMoKSkKICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKHsgZG91YmxlT3BlcmFuZC5uYW1lLCBi
aXR3aXNlX2Nhc3Q8aW50NjRfdD4oZG91YmxlT3BlcmFuZC52YWx1ZSkgfSk7CisgICAgb3BlcmFu
ZHMuYXBwZW5kKHsgIjEiLCAxIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIsIC0xIH0p
OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQ2NC1tYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDY0X3Q+OjptYXgoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiaW50NjQtbWluIiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgfSk7CisgICAgb3BlcmFuZHMuYXBw
ZW5kKHsgImludDMyLW1heCIsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIH0p
OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbnQzMi1taW4iLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSB9KTsKKworICAgIHJldHVybiBvcGVyYW5kczsKK30KKworc3RhdGlj
IFZlY3RvcjxJbnQzMk9wZXJhbmQ+IGludDMyT3BlcmFuZHMoKQoreworICAgIFZlY3RvcjxJbnQz
Mk9wZXJhbmQ+IG9wZXJhbmRzKHsKKyAgICAgICAgeyAiMCIsIDAgfSwKKyAgICAgICAgeyAiMSIs
IDEgfSwKKyAgICAgICAgeyAiLTEiLCAtMSB9LAorICAgICAgICB7ICI0MiIsIDQyIH0sCisgICAg
ICAgIHsgIi00MiIsIC00MiB9LAorICAgICAgICB7ICJpbnQzMi1tYXgiLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSB9LAorICAgICAgICB7ICJpbnQzMi1taW4iLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSB9CisgICAgfSk7CiAgICAgcmV0dXJuIG9wZXJh
bmRzOwogfQogCkBAIC00OTY1LDYgKzUxNDEsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0
ZXIpCiAgICAgUlVOKHRlc3RTdWJJbW1BcmcoMSwgMikpOwogICAgIFJVTih0ZXN0U3ViSW1tQXJn
KDEzLCAtNDIpKTsKICAgICBSVU4odGVzdFN1YkltbUFyZygtMTMsIDQyKSk7CisgICAgUlVOX1VO
QVJZKHRlc3ROZWdWYWx1ZVN1Yk9uZSwgaW50MzJPcGVyYW5kcygpKTsKIAogICAgIFJVTih0ZXN0
U3ViQXJnczMyKDEsIDEpKTsKICAgICBSVU4odGVzdFN1YkFyZ3MzMigxLCAyKSk7CkBAIC00OTc4
LDYgKzUxNTUsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RT
dWJJbW1BcmczMigxLCAyKSk7CiAgICAgUlVOKHRlc3RTdWJJbW1BcmczMigxMywgLTQyKSk7CiAg
ICAgUlVOKHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7CisgICAgUlVOX1VOQVJZKHRlc3ROZWdW
YWx1ZVN1Yk9uZTMyLCBpbnQ2NE9wZXJhbmRzKCkpOwogCiAgICAgUlVOX1VOQVJZKHRlc3RTdWJB
cmdEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCkpOwogICAgIFJVTl9CSU5BUlkodGVzdFN1YkFyZ3NE
b3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwpAQCAtNTA5MSwyNiAr
NTI2OSwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RCaXRP
ckltbUJpdE9yQXJnSW1tMzIoNiwgMSwgNikpOwogICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFy
Z0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKIAotICAgIFJVTih0ZXN0Qml0WG9yQXJncyg0MywgNDMp
KTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MoNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckFy
Z3MoMTAsIDMpKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ3MoNDIsIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpOwotICAgIFJVTih0ZXN0Qml0WG9yU2FtZUFyZyg0MykpOwotICAgIFJVTih0ZXN0Qml0WG9y
U2FtZUFyZygwKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JTYW1lQXJnKDMpKTsKLSAgICBSVU4odGVz
dEJpdFhvclNhbWVBcmcoMHhmZmZmZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JJ
bW1zKDQzLCA0MykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tcyg0MywgMCkpOwotICAgIFJVTih0
ZXN0Qml0WG9ySW1tcygxMCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tcyg0MiwgMHhmZmZm
ZmZmZmZmZmZmZmZmKSk7Ci0gICAgUlVOKHRlc3RCaXRYb3JBcmdJbW0oNDMsIDQzKSk7Ci0gICAg
UlVOKHRlc3RCaXRYb3JBcmdJbW0oNDMsIDApKTsKLSAgICBSVU4odGVzdEJpdFhvckFyZ0ltbSgx
MCwgMykpOwotICAgIFJVTih0ZXN0Qml0WG9yQXJnSW1tKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYp
KTsKLSAgICBSVU4odGVzdEJpdFhvckltbUFyZyg0MywgNDMpKTsKLSAgICBSVU4odGVzdEJpdFhv
ckltbUFyZyg0MywgMCkpOwotICAgIFJVTih0ZXN0Qml0WG9ySW1tQXJnKDEwLCAzKSk7Ci0gICAg
UlVOKHRlc3RCaXRYb3JJbW1BcmcoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTl9C
SU5BUlkodGVzdEJpdFhvckFyZ3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsK
KyAgICBSVU5fVU5BUlkodGVzdEJpdFhvclNhbWVBcmcsIGludDY0T3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Qml0WG9ySW1tcywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRz
KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvckltbUFyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTih0ZXN0Qml0WG9yQml0WG9yQXJn
SW1tSW1tKDIsIDcsIDMpKTsKICAgICBSVU4odGVzdEJpdFhvckJpdFhvckFyZ0ltbUltbSgxLCA2
LCA2KSk7CiAgICAgUlVOKHRlc3RCaXRYb3JCaXRYb3JBcmdJbW1JbW0oMHhmZmZmLCAyNCwgNykp
OwpAQCAtNTE0NCw2ICs1MzA3LDE0IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAg
ICBSVU4odGVzdEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKDYsIDEsIDYpKTsKICAgICBSVU4odGVz
dEJpdFhvckltbUJpdFhvckFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKIAorICAgIFJVTl9VTkFS
WSh0ZXN0Qml0Tm90QXJnLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0
Tm90SW1tLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90TWVtLCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0Tm90QXJnMzIsIGludDMyT3Bl
cmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXROb3RJbW0zMiwgaW50MzJPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdE5vdE1lbTMyLCBpbnQzMk9wZXJhbmRzKCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdE5vdE9uQm9vbGVhbkFuZEJyYW5jaDMyLCBpbnQzMk9wZXJhbmRz
KCksIGludDMyT3BlcmFuZHMoKSk7CisKICAgICBSVU4odGVzdFNobEFyZ3MoMSwgMCkpOwogICAg
IFJVTih0ZXN0U2hsQXJncygxLCAxKSk7CiAgICAgUlVOKHRlc3RTaGxBcmdzKDEsIDYyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggMWNiZDRkZTRjMmIwOTBl
Mjc0OTUzODBiNjE4ZGMxZjZhNGM2MDFmNS4uYjJhMzdhODBhMTYxMjE4ODM0NjNlYTA1ZTc2NzAz
Y2IwOTU0MDcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgc2hsKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OlNobCwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KICAgICBMVmFs
dWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRv
SW50MzIocmlnaHQpKTsgfQogICAgIExWYWx1ZSBsU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlpT
aHIsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOyB9Ci0gICAgTFZhbHVlIGJp
dE5vdChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBiaXROb3QoTFZhbHVl
KTsKIAogICAgIExWYWx1ZSBpbnNlcnRFbGVtZW50KExWYWx1ZSB2ZWN0b3IsIExWYWx1ZSBlbGVt
ZW50LCBMVmFsdWUgaW5kZXgpIHsgQ1JBU0goKTsgfQogCkBAIC00NzUsNiArNDc1LDEzIEBAIGlu
bGluZSB2b2lkIE91dHB1dDo6YWRkSW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1ZUZyb21C
bG9jayB2YWx1ZSwgUGFyYW1zLi4uCiAgICAgYWRkSW5jb21pbmdUb1BoaShwaGksIHRoZVJlc3Qu
Li4pOwogfQogCitpbmxpbmUgTFZhbHVlIE91dHB1dDo6Yml0Tm90KExWYWx1ZSB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0
WG9yLCBvcmlnaW4oKSwKKyAgICAgICAgdmFsdWUsCisgICAgICAgIG1fYmxvY2stPmFwcGVuZElu
dENvbnN0YW50KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlLT50eXBlKCksIC0xKSk7Cit9CisKIGlu
bGluZSBMVmFsdWUgT3V0cHV0OjpiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gaW50NjQgfHwgdHlwZSA9PSBkb3VibGVU
eXBlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>