<?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>148882</bug_id>
          
          <creation_ts>2015-09-04 21:50:23 -0700</creation_ts>
          <short_desc>Implement all the arithmetic and logical instructions in WebAssembly</short_desc>
          <delta_ts>2015-09-08 11:34:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>148838</dependson>
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1123860</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-04 21:50:23 -0700</bug_when>
    <thetext>Implement all the arithmetic and logical instructions for WebAssembly files generated by pack-asmjs &lt;https://github.com/WebAssembly/polyfill-prototype-1&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123861</commentid>
    <comment_count>1</comment_count>
      <attachid>260675</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-04 21:59:27 -0700</bug_when>
    <thetext>Created attachment 260675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124093</commentid>
    <comment_count>2</comment_count>
      <attachid>260730</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-07 00:10:37 -0700</bug_when>
    <thetext>Created attachment 260730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124274</commentid>
    <comment_count>3</comment_count>
      <attachid>260730</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-08 10:19:05 -0700</bug_when>
    <thetext>Comment on attachment 260730
Patch

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

r=me

&gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:45
&gt; +        return (6 * 7) | 0;

What&apos;s stopping the WASM compiler from just constant folding this operation and just returning a constant (thereby defeating this test)?  Why not pass the values into the test functions as arguments?  Unless there&apos;s a reason to not do so, please pass the args in to the test instead.  I&apos;m fine with doing a follow up patch to update all the tests to do this.

&gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:192
&gt; +shouldBe(module.multiplyOverflow(), -2147483648);

What does it mean to multiplyOverflow?  Does WASM require that we overflow silently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124290</commentid>
    <comment_count>4</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-08 10:42:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 260730 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260730&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:45
&gt; &gt; +        return (6 * 7) | 0;
&gt; 
&gt; What&apos;s stopping the WASM compiler from just constant folding this operation
&gt; and just returning a constant (thereby defeating this test)?  Why not pass
&gt; the values into the test functions as arguments?  Unless there&apos;s a reason to
&gt; not do so, please pass the args in to the test instead.  I&apos;m fine with doing
&gt; a follow up patch to update all the tests to do this.

pack-asmjs does not do constant folding. (I don&apos;t think they will ever do it. Optimization of asm.js should be done by Emscripten&apos;s.) But I will do it to be future-proof. It should also make the code easier to read.

&gt; &gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:192
&gt; &gt; +shouldBe(module.multiplyOverflow(), -2147483648);
&gt; 
&gt; What does it mean to multiplyOverflow?  Does WASM require that we overflow
&gt; silently?

multiplyOverflow = the result from multiplication is larger than INT32_MAX. The WASM spec says &quot;Sign-agnostic operations silently wrap overflowing results into the result type.&quot; It also says that multiplication on 32-bit integers is a sign-agnostic operation. &lt;https://github.com/WebAssembly/design/blob/master/AstSemantics.md&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124291</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-08 10:45:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 260730 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=260730&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:45
&gt; &gt; &gt; +        return (6 * 7) | 0;
&gt; &gt; 
&gt; &gt; What&apos;s stopping the WASM compiler from just constant folding this operation
&gt; &gt; and just returning a constant (thereby defeating this test)?  Why not pass
&gt; &gt; the values into the test functions as arguments?  Unless there&apos;s a reason to
&gt; &gt; not do so, please pass the args in to the test instead.  I&apos;m fine with doing
&gt; &gt; a follow up patch to update all the tests to do this.
&gt; 
&gt; pack-asmjs does not do constant folding. (I don&apos;t think they will ever do
&gt; it. Optimization of asm.js should be done by Emscripten&apos;s.) But I will do it
&gt; to be future-proof. It should also make the code easier to read.

OK.  Let&apos;s do this in a separate patch since there are other tests (than the ones in this patch) that would benefit from this refactoring as well.

&gt; &gt; &gt; Source/JavaScriptCore/tests/stress/wasm-arithmetic.js:192
&gt; &gt; &gt; +shouldBe(module.multiplyOverflow(), -2147483648);
&gt; &gt; 
&gt; &gt; What does it mean to multiplyOverflow?  Does WASM require that we overflow
&gt; &gt; silently?
&gt; 
&gt; multiplyOverflow = the result from multiplication is larger than INT32_MAX.
&gt; The WASM spec says &quot;Sign-agnostic operations silently wrap overflowing
&gt; results into the result type.&quot; It also says that multiplication on 32-bit
&gt; integers is a sign-agnostic operation.
&gt; &lt;https://github.com/WebAssembly/design/blob/master/AstSemantics.md&gt;

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124328</commentid>
    <comment_count>6</comment_count>
      <attachid>260730</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-08 11:34:31 -0700</bug_when>
    <thetext>Comment on attachment 260730
Patch

Clearing flags on attachment: 260730

Committed r189499: &lt;http://trac.webkit.org/changeset/189499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124329</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-08 11:34:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260675</attachid>
            <date>2015-09-04 21:59:27 -0700</date>
            <delta_ts>2015-09-07 00:10:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>14313</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNhMjI1ZDFkOGM3ZmJmMWNhNjZmOWZkNGQ5Yzg5
ZDk2MmU2ZDNlZmEuLjRmZWNjN2Q1MGJkZDhmMDZlYzM2OGExNWQ2ZjEyMjQ3ODlmYmI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA5LTA0ICBTdWtv
bHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBhbGwgdGhlIGFyaXRobWV0aWMgYW5kIGxvZ2ljYWwgaW5zdHJ1Y3Rpb25zIGluIFdlYkFzc2Vt
Ymx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL3N0cmVzcy93YXNtLWFyaXRobWV0aWMuanM6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3dh
c20tYXJpdGhtZXRpYy53YXNtOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIu
aDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkVW5hcnlJMzIpOgor
ICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6YnVpbGRCaW5hcnlJMzIpOgorICAg
ICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25QYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uSTMyKToKKyAgICAgICAgKiB3YXNtL1dB
U01GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyOjpidWlsZFVu
YXJ5STMyKToKKwogMjAxNS0wOS0wNCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdGhlIGRpdmlzaW9uIGFuZCBtb2R1bG8gaW5z
dHJ1Y3Rpb25zIGluIFdlYkFzc2VtYmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3dhc20tYXJpdGhtZXRpYy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvd2FzbS1hcml0aG1ldGljLmpzCmluZGV4IGZjMjdmNGNhYzI5NzU3NjU1
NjgxMzUwMzc0ODlmYzVhNzNmMTAyYWQuLjc4NDY3YTM3NzA5YjEyZDA4MTlhMmM1ODdlZjkzOGNi
ZjMyMjg1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
d2FzbS1hcml0aG1ldGljLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvd2FzbS1hcml0aG1ldGljLmpzCkBAIC0yNCw2ICsyNCwxNSBAQCB3YXNtLWFyaXRobWV0aWMu
d2FzbSBpcyBnZW5lcmF0ZWQgYnkgcGFjay1hc21qcyA8aHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5LwogZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2JhbCwgZW52LCBidWZmZXIpIHsKICAgICAi
dXNlIGFzbSI7CiAKKyAgICB2YXIgY2x6MzIgPSBnbG9iYWwuTWF0aC5jbHozMjsKKyAgICB2YXIg
YWJzID0gZ2xvYmFsLk1hdGguYWJzOworCisgICAgZnVuY3Rpb24gbmVnYXRlKCkgeworICAgICAg
ICB2YXIgeCA9IDA7CisgICAgICAgIHggPSA0MjsKKyAgICAgICAgcmV0dXJuIC14OworICAgIH0K
KwogICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0KCkgewogICAgICAgICByZXR1cm4gKCgxMCArIDQw
KSAtIDgpIHwgMDsKICAgICB9CkBAIC0zMiw2ICs0MSwxNCBAQCBmdW5jdGlvbiBhc21Nb2R1bGUo
Z2xvYmFsLCBlbnYsIGJ1ZmZlcikgewogICAgICAgICByZXR1cm4gKDIxNDc0ODM2NDcgKyAxKSB8
IDA7CiAgICAgfQogCisgICAgZnVuY3Rpb24gbXVsdGlwbHkoKSB7CisgICAgICAgIHJldHVybiAo
NiAqIDcpIHwgMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtdWx0aXBseU92ZXJmbG93KCkgewor
ICAgICAgICByZXR1cm4gKC0yMTQ3NDgzNjQ4ICogLTEpIHwgMDsKKyAgICB9CisKICAgICBmdW5j
dGlvbiBkaXZpZGUoKSB7CiAgICAgICAgIHJldHVybiAoNDIgLyA1KSB8IDA7CiAgICAgfQpAQCAt
NzYsOSArOTMsNjQgQEAgZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2JhbCwgZW52LCBidWZmZXIpIHsK
ICAgICAgICAgcmV0dXJuICgoLTEgPj4+IDApICUgMCkgfCAwOwogICAgIH0KIAorICAgIGZ1bmN0
aW9uIGJpdE5vdCgpIHsKKyAgICAgICAgcmV0dXJuIH40Mjk0OTY3MjUzOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGJpdE9yKCkgeworICAgICAgICByZXR1cm4gMTAgfCA0MDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBiaXRBbmQoKSB7CisgICAgICAgIHJldHVybiA0NyAmIDU4OworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGJpdFhvcigpIHsKKyAgICAgICAgcmV0dXJuIDIxIF4gNjM7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbGVmdFNoaWZ0KCkgeworICAgICAgICByZXR1cm4gMjEgPDwgMTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhcml0aG1ldGljUmlnaHRTaGlmdCgpIHsKKyAgICAgICAgcmV0
dXJuICgtMSkgPj4gMjg7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9naWNhbFJpZ2h0U2hpZnQo
KSB7CisgICAgICAgIHJldHVybiAoLTEpID4+PiAyODsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
b3VudExlYWRpbmdaZXJvcygpIHsKKyAgICAgICAgcmV0dXJuIGNsejMyKDQyKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjb3VudExlYWRpbmdaZXJvc09mWmVybygpIHsKKyAgICAgICAgcmV0dXJu
IGNsejMyKDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ2ljYWxOb3ROb25aZXJvKCkgewor
ICAgICAgICByZXR1cm4gKCE0MikgfCAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ2ljYWxO
b3RaZXJvKCkgeworICAgICAgICByZXR1cm4gKCEwKSB8IDA7CisgICAgfQorCisgICAgZnVuY3Rp
b24gYWJzb2x1dGVOZWdhdGl2ZSgpIHsKKyAgICAgICAgcmV0dXJuIGFicygtNDIpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFic29sdXRlUG9zaXRpdmUoKSB7CisgICAgICAgIHJldHVybiBhYnMo
NDIpOworICAgIH0KKwogICAgIHJldHVybiB7CisgICAgICAgIG5lZ2F0ZTogbmVnYXRlLAogICAg
ICAgICBhZGRTdWJ0cmFjdDogYWRkU3VidHJhY3QsCiAgICAgICAgIGFkZE92ZXJmbG93OiBhZGRP
dmVyZmxvdywKKyAgICAgICAgbXVsdGlwbHk6IG11bHRpcGx5LAorICAgICAgICBtdWx0aXBseU92
ZXJmbG93OiBtdWx0aXBseU92ZXJmbG93LAogICAgICAgICBkaXZpZGU6IGRpdmlkZSwKICAgICAg
ICAgZGl2aWRlQnlaZXJvOiBkaXZpZGVCeVplcm8sCiAgICAgICAgIGRpdmlkZU92ZXJmbG93OiBk
aXZpZGVPdmVyZmxvdywKQEAgLTkwLDE2ICsxNjIsMzUgQEAgZnVuY3Rpb24gYXNtTW9kdWxlKGds
b2JhbCwgZW52LCBidWZmZXIpIHsKICAgICAgICAgbW9kdWxvT3ZlcmZsb3c6IG1vZHVsb092ZXJm
bG93LAogICAgICAgICB1bnNpZ25lZE1vZHVsbzogdW5zaWduZWRNb2R1bG8sCiAgICAgICAgIHVu
c2lnbmVkTW9kdWxvWmVybzogdW5zaWduZWRNb2R1bG9aZXJvLAorICAgICAgICBiaXROb3Q6IGJp
dE5vdCwKKyAgICAgICAgYml0T3I6IGJpdE9yLAorICAgICAgICBiaXRBbmQ6IGJpdEFuZCwKKyAg
ICAgICAgYml0WG9yOiBiaXRYb3IsCisgICAgICAgIGxlZnRTaGlmdDogbGVmdFNoaWZ0LAorICAg
ICAgICBhcml0aG1ldGljUmlnaHRTaGlmdDogYXJpdGhtZXRpY1JpZ2h0U2hpZnQsCisgICAgICAg
IGxvZ2ljYWxSaWdodFNoaWZ0OiBsb2dpY2FsUmlnaHRTaGlmdCwKKyAgICAgICAgY291bnRMZWFk
aW5nWmVyb3M6IGNvdW50TGVhZGluZ1plcm9zLAorICAgICAgICBjb3VudExlYWRpbmdaZXJvc09m
WmVybzogY291bnRMZWFkaW5nWmVyb3NPZlplcm8sCisgICAgICAgIGxvZ2ljYWxOb3ROb25aZXJv
OiBsb2dpY2FsTm90Tm9uWmVybywKKyAgICAgICAgbG9naWNhbE5vdFplcm86IGxvZ2ljYWxOb3Ra
ZXJvLAorICAgICAgICBhYnNvbHV0ZU5lZ2F0aXZlOiBhYnNvbHV0ZU5lZ2F0aXZlLAorICAgICAg
ICBhYnNvbHV0ZVBvc2l0aXZlOiBhYnNvbHV0ZVBvc2l0aXZlLAogICAgIH07CiB9CiAqLwogCiB2
YXIgbW9kdWxlID0gbG9hZFdlYkFzc2VtYmx5KCJ3YXNtLWFyaXRobWV0aWMud2FzbSIpOwogCitz
aG91bGRCZShtb2R1bGUubmVnYXRlKCksIC00Mik7CisKIHNob3VsZEJlKG1vZHVsZS5hZGRTdWJ0
cmFjdCgpLCA0Mik7CiAKIHNob3VsZEJlKG1vZHVsZS5hZGRPdmVyZmxvdygpLCAtMjE0NzQ4MzY0
OCk7CiAKK3Nob3VsZEJlKG1vZHVsZS5tdWx0aXBseSgpLCA0Mik7CisKK3Nob3VsZEJlKG1vZHVs
ZS5tdWx0aXBseU92ZXJmbG93KCksIC0yMTQ3NDgzNjQ4KTsKKwogc2hvdWxkQmUobW9kdWxlLmRp
dmlkZSgpLCA4KTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewpAQCAtMTMzLDMgKzIyNCwyOSBAQCBz
aG91bGRCZShtb2R1bGUudW5zaWduZWRNb2R1bG8oKSwgNjcyOTUpOwogc2hvdWxkVGhyb3coKCkg
PT4gewogICAgIG1vZHVsZS51bnNpZ25lZE1vZHVsb1plcm8oKTsKIH0sICJFcnJvcjogRGl2aXNp
b24gYnkgemVybyBvciBkaXZpc2lvbiBvdmVyZmxvdy4iKTsKKworc2hvdWxkQmUobW9kdWxlLmJp
dE5vdCgpLCA0Mik7CisKK3Nob3VsZEJlKG1vZHVsZS5iaXRPcigpLCA0Mik7CisKK3Nob3VsZEJl
KG1vZHVsZS5iaXRBbmQoKSwgNDIpOworCitzaG91bGRCZShtb2R1bGUuYml0WG9yKCksIDQyKTsK
Kworc2hvdWxkQmUobW9kdWxlLmxlZnRTaGlmdCgpLCA0Mik7CisKK3Nob3VsZEJlKG1vZHVsZS5h
cml0aG1ldGljUmlnaHRTaGlmdCgpLCAtMSk7CisKK3Nob3VsZEJlKG1vZHVsZS5sb2dpY2FsUmln
aHRTaGlmdCgpLCAxNSk7CisKK3Nob3VsZEJlKG1vZHVsZS5jb3VudExlYWRpbmdaZXJvcygpLCAy
Nik7CisKK3Nob3VsZEJlKG1vZHVsZS5jb3VudExlYWRpbmdaZXJvc09mWmVybygpLCAzMik7CisK
K3Nob3VsZEJlKG1vZHVsZS5sb2dpY2FsTm90Tm9uWmVybygpLCAwKTsKKworc2hvdWxkQmUobW9k
dWxlLmxvZ2ljYWxOb3RaZXJvKCksIDEpOworCitzaG91bGRCZShtb2R1bGUuYWJzb2x1dGVOZWdh
dGl2ZSgpLCA0Mik7CisKK3Nob3VsZEJlKG1vZHVsZS5hYnNvbHV0ZVBvc2l0aXZlKCksIDQyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1hcml0
aG1ldGljLndhc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tYXJp
dGhtZXRpYy53YXNtCmluZGV4IGI4MzdmOWU1MTI4YWE5NTBhYThkZWZlM2YwNjcwYjdiODdkYzRk
M2EuLjRhYWQ4MzA0MGQ0Mjc5OTliYTNlNWQxNWU2ODI3NTM4YWE5YjFmY2EgMTAwNjQ0CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCA2ODIKemNtWnV0eGxZM3s4Mi0mISZUYC03RG1QVEBFQ3xIRjA0
OyhBdjg5UWRUMXNNK0k3TXM7P2FEaX1ORjNfVSM9dFdtCnohUng/cHJ3dChSQExtMjdDcyYkaHph
Oz9MMFkzMzBIdiY5fjQ9TDlPIzN2UTJlP3swNWd2ciF2SyQzSF9efnd8Uwp6RVJvfG5ZYmZVKjl3
cHVjaHpzR3AjOUNGTk4qMDRWKVFmPmsoJnshe21OaldybFU2bEwwamJgMFY3UjJwbWRVJCgKekFO
ck1nMSN5KlpsTzUhPlhSP2Q1e3clansxVFRvMjNiI1UoVFhJODJzKkZeSldlRmlrSW4+a3kxPCh4
UiUrQ3V+CnooKitQVHhlfDI/N1FjY1ArcVZSfXc2M0FHc3A3amZnTyEqO3AqYGFMPmtIfn49IWpm
ZykjKkRQR2FZSWlNQWVEawp6elJ9ZlhiSGxlZGJWcjwoP193bmlKJnsrRmRtfGxCP3JUbXVqKFlv
bGQpMVQ3R20rJjIyOVI/dTM/bDcwMWBIdmUKemF+Rm0hU2BjU05SdUN8dnhsOXlvRHd1eEMld2kp
UXdZYlQyJkg1M0k+RCtoMzUhRFJsbX54Mis8QTApREw5TCU/Cmh3QnItOSspPmZ3Y2NsRTNtaU1e
ajNtU2ooYlRje085I2VsfDxfb3hPLW1kQHYKCmxpdGVyYWwgMzM0CnpjbVhSPEVZNitCJUR9K1Ah
MDtha18jMSRMTHlNNkM0dFVgI0ZyJEh5VXRWcSVxczlzI0x5aSVvZz8lQkFzbzFtPgp6TEByemFB
eyFma3EqQjhvRmJOVi0yRm9mbFVJVzx4UW03MThzMD4hOSghalcmbWtsVlcoeSlNJEghJnE4eEhQ
R3gKekNeNU4mZmRSPHpGSDA+LSVnSFppVWApdkAlUz1nU1YxbSQybH5KaWhgMyVldTkkWGJtWDxs
KD1kUn1VWjNxJjw1CnhEaiV3Z0VqS0A8RyQpXmQ5WVh1MXJZRHdVbVpkVXFLPUAjaklVI0pnJHlf
aiNkPzkrZFFUYnAhSk9JUDdZIzBDbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDA1OGMxZGI4ZGE2MWNmMmNhMjExZTdjNjk5
MjE0ZTg0NmNmYzI5NjQuLmU5NzkyMTZhMTZhOWMzNmYyODNkMTczOWJlMjJhNzJhODNkMTA0NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBp
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGls
ZXIuaApAQCAtMjI2LDYgKzIyNiw0MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBVTlVTRUQ7
CiAgICAgfQogCisgICAgaW50IGJ1aWxkVW5hcnlJMzIoaW50LCBXQVNNT3BFeHByZXNzaW9uSTMy
IG9wKQorICAgIHsKKyAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tU
b3AgLSAxKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TmVnYXRlOgorICAgICAgICAgICAgbmVnMzIoR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6Qml0Tm90OgorICAgICAgICAgICAgeG9yMzIoVHJ1c3RlZEltbTMyKC0xKSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6Q291bnRMZWFkaW5nWmVyb3M6CisgICAgICAgICAgICBjb3VudExlYWRp
bmdaZXJvczMyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMb2dpY2FsTm90OiB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIGJyYW5jaGVzLgorICAgICAgICAgICAgSnVt
cCB6ZXJvID0gYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBKdW1w
IGVuZCA9IGp1bXAoKTsKKyAgICAgICAgICAgIHplcm8ubGluayh0aGlzKTsKKyAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBlbmQu
bGluayh0aGlzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6QWJzOiB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3Qg
dXNlIGJyYW5jaGVzLgorICAgICAgICAgICAgSnVtcCBlbmQgPSBicmFuY2hUZXN0MzIoUG9zaXRp
dmVPclplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG5lZzMyKEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGVuZC5saW5rKHRoaXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIHRlbXBvcmFy
eUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSk7CisgICAgICAgIHJldHVybiBVTlVTRUQ7Cisg
ICAgfQorCiAgICAgaW50IGJ1aWxkQmluYXJ5STMyKGludCwgaW50LCBXQVNNT3BFeHByZXNzaW9u
STMyIG9wKQogICAgIHsKICAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3Rh
Y2tUb3AgLSAyKSwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMjM3LDYgKzI3NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdWI6CiAgICAgICAgICAgICBzdWIz
MihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TXVsOgorICAgICAgICAgICAgbXVsMzIo
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNEaXY6CiAgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6VURpdjoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpT
TW9kOgpAQCAtMjg1LDYgKzMyNSwyNCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0T3I6
CisgICAgICAgICAgICBvcjMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRBbmQ6
CisgICAgICAgICAgICBhbmQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0WG9y
OgorICAgICAgICAgICAgeG9yMzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxlZnRT
aGlmdDoKKyAgICAgICAgICAgIGxzaGlmdDMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpBcml0aG1ldGljUmlnaHRTaGlmdDoKKyAgICAgICAgICAgIHJzaGlmdDMyKEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpMb2dpY2FsUmlnaHRTaGlmdDoKKyAgICAgICAgICAgIHVyc2hp
ZnQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0
aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBh
cnNlci5jcHAKaW5kZXggZmFiMmViNDI4MDdiMWQ2YmVjNzU5NjFhMTZmYmE1YzYzMzA2MDY0Mi4u
NjQ2MGY2YmY2ZDNlMDRmYmU0ZWFlNTk5Y2EyMzg2YjRhZjI2ODY3NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCkBAIC00MzAsMTIg
KzQzMCwyNSBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhw
cmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1t
ZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpHZXRMb2NhbDoKICAgICAgICAgICAgIHJldHVybiBwYXJzZUdldExvY2FsRXhwcmVz
c2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpOZWdh
dGU6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0Tm90OgorICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvdW50TGVhZGluZ1plcm9zOgorICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25JMzI6OkxvZ2ljYWxOb3Q6CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6QWJzOgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlVW5hcnlFeHByZXNzaW9u
STMyKGNvbnRleHQsIG9wKTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpBZGQ6
CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3ViOgorICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6Ok11bDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTRGl2OgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVEaXY6CiAgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U01vZDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpVTW9kOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdE9y
OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdEFuZDoKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRYb3I6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6TGVmdFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkFy
aXRobWV0aWNSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxv
Z2ljYWxSaWdodFNoaWZ0OgogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcmVzc2lv
bkkzMihjb250ZXh0LCBvcCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1
YWxJMzI6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Tm90RXF1YWxJMzI6CkBA
IC00NzQsMTcgKzQ4Nyw2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6Q29tbWE6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
RnJvbUYzMjoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpGcm9tRjY0OgotICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Ok5lZ2F0ZToKLSAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpNdWw6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
Qml0Tm90OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdE9yOgotICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdEFuZDoKLSAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpCaXRYb3I6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
TGVmdFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkFyaXRobWV0aWNS
aWdodFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvZ2ljYWxSaWdo
dFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvdW50TGVhZGluZ1pl
cm9zOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvZ2ljYWxOb3Q6CiAgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGMzI6CiAgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGNjQ6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6Tm90RXF1YWxGMzI6CkBAIC01MDEsNyArNTAzLDYgQEAgQ29udGV4dEV4cHJlc3Npb24g
V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTWluOgogICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6OlNNYXg6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6VU1heDoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpBYnM6CiAgICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9ucy4KICAgICAgICAgICAg
IEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlvbi4iKTsKICAgICAgICAg
ZGVmYXVsdDoKQEAgLTU2OCw2ICs1NjksMTQgQEAgQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXgKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQsIFdBU01P
cEV4cHJlc3Npb25JMzIgb3ApCit7CisgICAgQ29udGV4dEV4cHJlc3Npb24gZXhwcmVzc2lvbiA9
IHBhcnNlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKyAg
ICByZXR1cm4gY29udGV4dC5idWlsZFVuYXJ5STMyKGV4cHJlc3Npb24sIG9wKTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+CiBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0LCBXQVNNT3BFeHBy
ZXNzaW9uSTMyIG9wKQogewogICAgIENvbnRleHRFeHByZXNzaW9uIGxlZnQgPSBwYXJzZUV4cHJl
c3Npb25JMzIoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
dW5jdGlvblBhcnNlci5oCmluZGV4IDI2OWNmMzFlZTdhODJhNzAxMTdhODViMDNjYWM1YjQzYWNm
MmQyN2YuLmEzMDA3YjFjNjRlNTM3MDRjZTFjNWYzYjBhNzM1OWUxZDRkNjE2ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC04NCw2
ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRF
eHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250ZXh0Jik7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlR2V0TG9jYWxFeHBy
ZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCBsb2NhbEluZGV4KTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25J
MzIoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVz
c2lvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgV0FTTU9wRXhwcmVzc2lvbkkz
Mik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNl
QmluYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgV0FTTU9wRXhwcmVzc2lvbkkzMik7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlUmVsYXRpb25h
bEkzMkV4cHJlc3Npb25JMzIoQ29udGV4dCYsIFdBU01PcEV4cHJlc3Npb25JMzIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVj
a2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVj
a2VyLmgKaW5kZXggNTE5ODU1M2U0MzgwNDE3NTIyMTcxZGE4YjY2Y2ExY2VlN2NhMGM0MS4uYTg0
NWU5ZTFlZGI4YjkxODk5NzE5YTg2NGMzMTE3MmIzYjBlMGU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApAQCAt
NzIsNiArNzIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVU5VU0VEOwogICAgIH0KIAor
ICAgIGludCBidWlsZFVuYXJ5STMyKGludCwgV0FTTU9wRXhwcmVzc2lvbkkzMikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAgfQorCiAgICAgaW50IGJ1aWxkQmluYXJ5STMyKGlu
dCwgaW50LCBXQVNNT3BFeHByZXNzaW9uSTMyKQogICAgIHsKICAgICAgICAgbV90ZW1wU3RhY2tU
b3AtLTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260730</attachid>
            <date>2015-09-07 00:10:37 -0700</date>
            <delta_ts>2015-09-08 11:34:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148882-20150907001033.patch</filename>
            <type>text/plain</type>
            <size>14442</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2NhOTc0OTU5MzJiOTA2OThmZDRhZWI4NWRmMzAyNTFhODYyYWQ3Li40MzdlZGE4YmRkZWEyODlh
N2U1Y2QyOGZiZDAzYjZhNzM1NTdiNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNS0wOS0wNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYWxsIHRoZSBhcml0aG1ldGljIGFuZCBsb2dp
Y2FsIGluc3RydWN0aW9ucyBpbiBXZWJBc3NlbWJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFsbCB0aGUgYXJp
dGhtZXRpYyBhbmQgbG9naWNhbCBpbnN0cnVjdGlvbnMgZm9yCisgICAgICAgIDMyLWJpdCBpbnRl
Z2VycyBpbiBXZWJBc3NlbWJseS4KKworICAgICAgICAqIHRlc3RzL3N0cmVzcy93YXNtLWFyaXRo
bWV0aWMuanM6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3dhc20vYXJpdGhtZXRpYy53YXNtOgor
ICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6V0FT
TUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkVW5hcnlJMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVu
Y3Rpb25Db21waWxlcjo6YnVpbGRCaW5hcnlJMzIpOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0
aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4
cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlVW5h
cnlFeHByZXNzaW9uSTMyKToKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOgor
ICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlND
OjpXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyOjpidWlsZFVuYXJ5STMyKToKKwogMjAxNS0wOS0w
NiAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgdGhlIHJlbGF0aW9uYWwgaW5zdHJ1Y3Rpb25zIGluIFdlYkFzc2VtYmx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tYXJpdGhtZXRp
Yy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1hcml0aG1ldGlj
LmpzCmluZGV4IGE1NGNiNzE1YzdhMWI2MmM2ZjMzNDk0YzUzNzQ3MmUzNzFhZWRjZGYuLjU4YjFm
MTYyZGQyODRmMGExZWQ5ZmU4MmZhYzFmMjA0MDNiMmNhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1hcml0aG1ldGljLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1hcml0aG1ldGljLmpzCkBAIC0yNCw2
ICsyNCwxNSBAQCB3YXNtL2FyaXRobWV0aWMud2FzbSBpcyBnZW5lcmF0ZWQgYnkgcGFjay1hc21q
cyA8aHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5LwogZnVuY3Rpb24gYXNtTW9kdWxlKGds
b2JhbCwgZW52LCBidWZmZXIpIHsKICAgICAidXNlIGFzbSI7CiAKKyAgICB2YXIgY2x6MzIgPSBn
bG9iYWwuTWF0aC5jbHozMjsKKyAgICB2YXIgYWJzID0gZ2xvYmFsLk1hdGguYWJzOworCisgICAg
ZnVuY3Rpb24gbmVnYXRlKCkgeworICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgIHggPSA0MjsK
KyAgICAgICAgcmV0dXJuIC14OworICAgIH0KKwogICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0KCkg
ewogICAgICAgICByZXR1cm4gKCgxMCArIDQwKSAtIDgpIHwgMDsKICAgICB9CkBAIC0zMiw2ICs0
MSwxNCBAQCBmdW5jdGlvbiBhc21Nb2R1bGUoZ2xvYmFsLCBlbnYsIGJ1ZmZlcikgewogICAgICAg
ICByZXR1cm4gKDIxNDc0ODM2NDcgKyAxKSB8IDA7CiAgICAgfQogCisgICAgZnVuY3Rpb24gbXVs
dGlwbHkoKSB7CisgICAgICAgIHJldHVybiAoNiAqIDcpIHwgMDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBtdWx0aXBseU92ZXJmbG93KCkgeworICAgICAgICByZXR1cm4gKC0yMTQ3NDgzNjQ4ICog
LTEpIHwgMDsKKyAgICB9CisKICAgICBmdW5jdGlvbiBkaXZpZGUoKSB7CiAgICAgICAgIHJldHVy
biAoNDIgLyA1KSB8IDA7CiAgICAgfQpAQCAtNzYsOSArOTMsNjQgQEAgZnVuY3Rpb24gYXNtTW9k
dWxlKGdsb2JhbCwgZW52LCBidWZmZXIpIHsKICAgICAgICAgcmV0dXJuICgoLTEgPj4+IDApICUg
MCkgfCAwOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGJpdE5vdCgpIHsKKyAgICAgICAgcmV0dXJu
IH4xOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJpdE9yKCkgeworICAgICAgICByZXR1cm4gMyB8
IDU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYml0QW5kKCkgeworICAgICAgICByZXR1cm4gMyAm
IDU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYml0WG9yKCkgeworICAgICAgICByZXR1cm4gMyBe
IDU7CisgICAgfQorCisgICAgZnVuY3Rpb24gbGVmdFNoaWZ0KCkgeworICAgICAgICByZXR1cm4g
MSA8PCAxNjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcml0aG1ldGljUmlnaHRTaGlmdCgpIHsK
KyAgICAgICAgcmV0dXJuICgtMSkgPj4gMTY7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9naWNh
bFJpZ2h0U2hpZnQoKSB7CisgICAgICAgIHJldHVybiAoLTEpID4+PiAxNjsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjb3VudExlYWRpbmdaZXJvcygpIHsKKyAgICAgICAgcmV0dXJuIGNsejMyKDQy
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb3VudExlYWRpbmdaZXJvc09mWmVybygpIHsKKyAg
ICAgICAgcmV0dXJuIGNsejMyKDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ2ljYWxOb3RO
b25aZXJvKCkgeworICAgICAgICByZXR1cm4gKCE0MikgfCAwOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGxvZ2ljYWxOb3RaZXJvKCkgeworICAgICAgICByZXR1cm4gKCEwKSB8IDA7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYWJzb2x1dGVOZWdhdGl2ZSgpIHsKKyAgICAgICAgcmV0dXJuIGFicygt
NDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFic29sdXRlUG9zaXRpdmUoKSB7CisgICAgICAg
IHJldHVybiBhYnMoNDIpOworICAgIH0KKwogICAgIHJldHVybiB7CisgICAgICAgIG5lZ2F0ZTog
bmVnYXRlLAogICAgICAgICBhZGRTdWJ0cmFjdDogYWRkU3VidHJhY3QsCiAgICAgICAgIGFkZE92
ZXJmbG93OiBhZGRPdmVyZmxvdywKKyAgICAgICAgbXVsdGlwbHk6IG11bHRpcGx5LAorICAgICAg
ICBtdWx0aXBseU92ZXJmbG93OiBtdWx0aXBseU92ZXJmbG93LAogICAgICAgICBkaXZpZGU6IGRp
dmlkZSwKICAgICAgICAgZGl2aWRlQnlaZXJvOiBkaXZpZGVCeVplcm8sCiAgICAgICAgIGRpdmlk
ZU92ZXJmbG93OiBkaXZpZGVPdmVyZmxvdywKQEAgLTkwLDE2ICsxNjIsMzUgQEAgZnVuY3Rpb24g
YXNtTW9kdWxlKGdsb2JhbCwgZW52LCBidWZmZXIpIHsKICAgICAgICAgbW9kdWxvT3ZlcmZsb3c6
IG1vZHVsb092ZXJmbG93LAogICAgICAgICB1bnNpZ25lZE1vZHVsbzogdW5zaWduZWRNb2R1bG8s
CiAgICAgICAgIHVuc2lnbmVkTW9kdWxvWmVybzogdW5zaWduZWRNb2R1bG9aZXJvLAorICAgICAg
ICBiaXROb3Q6IGJpdE5vdCwKKyAgICAgICAgYml0T3I6IGJpdE9yLAorICAgICAgICBiaXRBbmQ6
IGJpdEFuZCwKKyAgICAgICAgYml0WG9yOiBiaXRYb3IsCisgICAgICAgIGxlZnRTaGlmdDogbGVm
dFNoaWZ0LAorICAgICAgICBhcml0aG1ldGljUmlnaHRTaGlmdDogYXJpdGhtZXRpY1JpZ2h0U2hp
ZnQsCisgICAgICAgIGxvZ2ljYWxSaWdodFNoaWZ0OiBsb2dpY2FsUmlnaHRTaGlmdCwKKyAgICAg
ICAgY291bnRMZWFkaW5nWmVyb3M6IGNvdW50TGVhZGluZ1plcm9zLAorICAgICAgICBjb3VudExl
YWRpbmdaZXJvc09mWmVybzogY291bnRMZWFkaW5nWmVyb3NPZlplcm8sCisgICAgICAgIGxvZ2lj
YWxOb3ROb25aZXJvOiBsb2dpY2FsTm90Tm9uWmVybywKKyAgICAgICAgbG9naWNhbE5vdFplcm86
IGxvZ2ljYWxOb3RaZXJvLAorICAgICAgICBhYnNvbHV0ZU5lZ2F0aXZlOiBhYnNvbHV0ZU5lZ2F0
aXZlLAorICAgICAgICBhYnNvbHV0ZVBvc2l0aXZlOiBhYnNvbHV0ZVBvc2l0aXZlLAogICAgIH07
CiB9CiAqLwogCiB2YXIgbW9kdWxlID0gbG9hZFdlYkFzc2VtYmx5KCJ3YXNtL2FyaXRobWV0aWMu
d2FzbSIpOwogCitzaG91bGRCZShtb2R1bGUubmVnYXRlKCksIC00Mik7CisKIHNob3VsZEJlKG1v
ZHVsZS5hZGRTdWJ0cmFjdCgpLCA0Mik7CiAKIHNob3VsZEJlKG1vZHVsZS5hZGRPdmVyZmxvdygp
LCAtMjE0NzQ4MzY0OCk7CiAKK3Nob3VsZEJlKG1vZHVsZS5tdWx0aXBseSgpLCA0Mik7CisKK3No
b3VsZEJlKG1vZHVsZS5tdWx0aXBseU92ZXJmbG93KCksIC0yMTQ3NDgzNjQ4KTsKKwogc2hvdWxk
QmUobW9kdWxlLmRpdmlkZSgpLCA4KTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewpAQCAtMTMzLDMg
KzIyNCwyOSBAQCBzaG91bGRCZShtb2R1bGUudW5zaWduZWRNb2R1bG8oKSwgNjcyOTUpOwogc2hv
dWxkVGhyb3coKCkgPT4gewogICAgIG1vZHVsZS51bnNpZ25lZE1vZHVsb1plcm8oKTsKIH0sICJF
cnJvcjogRGl2aXNpb24gYnkgemVybyBvciBkaXZpc2lvbiBvdmVyZmxvdy4iKTsKKworc2hvdWxk
QmUobW9kdWxlLmJpdE5vdCgpLCAtMik7CisKK3Nob3VsZEJlKG1vZHVsZS5iaXRPcigpLCA3KTsK
Kworc2hvdWxkQmUobW9kdWxlLmJpdEFuZCgpLCAxKTsKKworc2hvdWxkQmUobW9kdWxlLmJpdFhv
cigpLCA2KTsKKworc2hvdWxkQmUobW9kdWxlLmxlZnRTaGlmdCgpLCA2NTUzNik7CisKK3Nob3Vs
ZEJlKG1vZHVsZS5hcml0aG1ldGljUmlnaHRTaGlmdCgpLCAtMSk7CisKK3Nob3VsZEJlKG1vZHVs
ZS5sb2dpY2FsUmlnaHRTaGlmdCgpLCA2NTUzNSk7CisKK3Nob3VsZEJlKG1vZHVsZS5jb3VudExl
YWRpbmdaZXJvcygpLCAyNik7CisKK3Nob3VsZEJlKG1vZHVsZS5jb3VudExlYWRpbmdaZXJvc09m
WmVybygpLCAzMik7CisKK3Nob3VsZEJlKG1vZHVsZS5sb2dpY2FsTm90Tm9uWmVybygpLCAwKTsK
Kworc2hvdWxkQmUobW9kdWxlLmxvZ2ljYWxOb3RaZXJvKCksIDEpOworCitzaG91bGRCZShtb2R1
bGUuYWJzb2x1dGVOZWdhdGl2ZSgpLCA0Mik7CisKK3Nob3VsZEJlKG1vZHVsZS5hYnNvbHV0ZVBv
c2l0aXZlKCksIDQyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvd2FzbS9hcml0aG1ldGljLndhc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3dhc20vYXJpdGhtZXRpYy53YXNtCmluZGV4IGI4MzdmOWU1MTI4YWE5NTBhYThkZWZl
M2YwNjcwYjdiODdkYzRkM2EuLjRhYWQ4MzA0MGQ0Mjc5OTliYTNlNWQxNWU2ODI3NTM4YWE5YjFm
Y2EgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2ODIKemNtWnV0eGxZM3s4Mi0mISZU
YC03RG1QVEBFQ3xIRjA0OyhBdjg5UWRUMXNNK0k3TXM7P2FEaX1ORjNfVSM9dFdtCnohUng/cHJ3
dChSQExtMjdDcyYkaHphOz9MMFkzMzBIdiY5fjQ9TDlPIzN2UTJlP3swNWd2ciF2SyQzSF9efnd8
Uwp6RVJvfG5ZYmZVKjl3cHVjaHpzR3AjOUNGTk4qMDRWKVFmPmsoJnshe21OaldybFU2bEwwamJg
MFY3UjJwbWRVJCgKekFOck1nMSN5KlpsTzUhPlhSP2Q1e3clansxVFRvMjNiI1UoVFhJODJzKkZe
SldlRmlrSW4+a3kxPCh4UiUrQ3V+CnooKitQVHhlfDI/N1FjY1ArcVZSfXc2M0FHc3A3amZnTyEq
O3AqYGFMPmtIfn49IWpmZykjKkRQR2FZSWlNQWVEawp6elJ9ZlhiSGxlZGJWcjwoP193bmlKJnsr
RmRtfGxCP3JUbXVqKFlvbGQpMVQ3R20rJjIyOVI/dTM/bDcwMWBIdmUKemF+Rm0hU2BjU05SdUN8
dnhsOXlvRHd1eEMld2kpUXdZYlQyJkg1M0k+RCtoMzUhRFJsbX54Mis8QTApREw5TCU/Cmh3QnIt
OSspPmZ3Y2NsRTNtaU1eajNtU2ooYlRje085I2VsfDxfb3hPLW1kQHYKCmxpdGVyYWwgMzM0Cnpj
bVhSPEVZNitCJUR9K1AhMDtha18jMSRMTHlNNkM0dFVgI0ZyJEh5VXRWcSVxczlzI0x5aSVvZz8l
QkFzbzFtPgp6TEByemFBeyFma3EqQjhvRmJOVi0yRm9mbFVJVzx4UW03MThzMD4hOSghalcmbWts
VlcoeSlNJEghJnE4eEhQR3gKekNeNU4mZmRSPHpGSDA+LSVnSFppVWApdkAlUz1nU1YxbSQybH5K
aWhgMyVldTkkWGJtWDxsKD1kUn1VWjNxJjw1CnhEaiV3Z0VqS0A8RyQpXmQ5WVh1MXJZRHdVbVpk
VXFLPUAjaklVI0pnJHlfaiNkPzkrZFFUYnAhSk9JUDdZIzBDbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDA1OGMxZGI4ZGE2
MWNmMmNhMjExZTdjNjk5MjE0ZTg0NmNmYzI5NjQuLmU5NzkyMTZhMTZhOWMzNmYyODNkMTczOWJl
MjJhNzJhODNkMTA0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01GdW5jdGlvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uQ29tcGlsZXIuaApAQCAtMjI2LDYgKzIyNiw0MyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBVTlVTRUQ7CiAgICAgfQogCisgICAgaW50IGJ1aWxkVW5hcnlJMzIoaW50LCBXQVNN
T3BFeHByZXNzaW9uSTMyIG9wKQorICAgIHsKKyAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJl
c3MobV90ZW1wU3RhY2tUb3AgLSAxKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzd2l0Y2gg
KG9wKSB7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TmVnYXRlOgorICAgICAg
ICAgICAgbmVnMzIoR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0Tm90OgorICAgICAgICAgICAgeG9yMzIoVHJ1
c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q291bnRMZWFkaW5nWmVyb3M6CisgICAgICAg
ICAgICBjb3VudExlYWRpbmdaZXJvczMyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpM
b2dpY2FsTm90OiB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3QgdXNlIGJyYW5jaGVzLgor
ICAgICAgICAgICAgSnVtcCB6ZXJvID0gYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKKyAgICAgICAgICAgIHplcm8ubGluayh0aGlz
KTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBlbmQubGluayh0aGlzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWJzOiB7CisgICAgICAgICAgICAv
LyBGSVhNRTogRG9uJ3QgdXNlIGJyYW5jaGVzLgorICAgICAgICAgICAgSnVtcCBlbmQgPSBicmFu
Y2hUZXN0MzIoUG9zaXRpdmVPclplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG5l
ZzMyKEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGVuZC5saW5rKHRoaXMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6
cmVnVDAsIHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSk7CisgICAgICAgIHJl
dHVybiBVTlVTRUQ7CisgICAgfQorCiAgICAgaW50IGJ1aWxkQmluYXJ5STMyKGludCwgaW50LCBX
QVNNT3BFeHByZXNzaW9uSTMyIG9wKQogICAgIHsKICAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFk
ZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAyKSwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMjM3LDYgKzI3
NCw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdWI6CiAg
ICAgICAgICAgICBzdWIzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TXVsOgorICAg
ICAgICAgICAgbXVsMzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNEaXY6CiAgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VURpdjoKICAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpTTW9kOgpAQCAtMjg1LDYgKzMyNSwyNCBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6Qml0T3I6CisgICAgICAgICAgICBvcjMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpCaXRBbmQ6CisgICAgICAgICAgICBhbmQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6Qml0WG9yOgorICAgICAgICAgICAgeG9yMzIoR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OkxlZnRTaGlmdDoKKyAgICAgICAgICAgIGxzaGlmdDMyKEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpBcml0aG1ldGljUmlnaHRTaGlmdDoKKyAgICAgICAgICAgIHJzaGlm
dDMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMb2dpY2FsUmlnaHRTaGlmdDoKKyAg
ICAgICAgICAgIHVyc2hpZnQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01GdW5jdGlvblBhcnNlci5jcHAKaW5kZXggZmFiMmViNDI4MDdiMWQ2YmVjNzU5NjFhMTZm
YmE1YzYzMzA2MDY0Mi4uNjQ2MGY2YmY2ZDNlMDRmYmU0ZWFlNTk5Y2EyMzg2YjRhZjI2ODY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIu
Y3BwCkBAIC00MzAsMTIgKzQzMCwyNSBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKICAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRMb2NhbDoKICAgICAgICAgICAgIHJldHVybiBwYXJz
ZUdldExvY2FsRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpOZWdhdGU6CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Qml0
Tm90OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNvdW50TGVhZGluZ1plcm9z
OgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvZ2ljYWxOb3Q6CisgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6QWJzOgorICAgICAgICAgICAgcmV0dXJuIHBhcnNl
VW5hcnlFeHByZXNzaW9uSTMyKGNvbnRleHQsIG9wKTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpBZGQ6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3ViOgor
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Ok11bDoKICAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpTRGl2OgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OlVEaXY6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U01vZDoKICAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTW9kOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OkJpdE9yOgorICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdEFu
ZDoKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRYb3I6CisgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TGVmdFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OkFyaXRobWV0aWNSaWdodFNoaWZ0OgorICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OkxvZ2ljYWxSaWdodFNoaWZ0OgogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
QmluYXJ5RXhwcmVzc2lvbkkzMihjb250ZXh0LCBvcCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6RXF1YWxJMzI6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
Tm90RXF1YWxJMzI6CkBAIC00NzQsMTcgKzQ4Nyw2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q29tbWE6CiAgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6RnJvbUYzMjoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpGcm9tRjY0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Ok5lZ2F0ZToKLSAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpNdWw6Ci0gICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6Qml0Tm90OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkJpdE9yOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkJpdEFuZDoKLSAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpCaXRYb3I6Ci0gICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6TGVmdFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkFyaXRobWV0aWNSaWdodFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkxvZ2ljYWxSaWdodFNoaWZ0OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6
OkNvdW50TGVhZGluZ1plcm9zOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6Okxv
Z2ljYWxOb3Q6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGMzI6CiAg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6RXF1YWxGNjQ6CiAgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6Tm90RXF1YWxGMzI6CkBAIC01MDEsNyArNTAzLDYgQEAgQ29u
dGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29u
dGV4dCYgY29udGV4dCkKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTWluOgog
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNNYXg6CiAgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6VU1heDoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpBYnM6CiAgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZXNlIGluc3RydWN0aW9u
cy4KICAgICAgICAgICAgIEZBSUxfV0lUSF9NRVNTQUdFKCJVbnN1cHBvcnRlZCBpbnN0cnVjdGlv
bi4iKTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTU2OCw2ICs1NjksMTQgQEAgQ29udGV4dEV4cHJl
c3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihDb250
ZXh0JiBjb250ZXgKIH0KIAogdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVz
c2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uSTMyKENvbnRleHQm
IGNvbnRleHQsIFdBU01PcEV4cHJlc3Npb25JMzIgb3ApCit7CisgICAgQ29udGV4dEV4cHJlc3Np
b24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBQUk9QQUdB
VEVfRVJST1IoKTsKKyAgICByZXR1cm4gY29udGV4dC5idWlsZFVuYXJ5STMyKGV4cHJlc3Npb24s
IG9wKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CiBDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250
ZXh0LCBXQVNNT3BFeHByZXNzaW9uSTMyIG9wKQogewogICAgIENvbnRleHRFeHByZXNzaW9uIGxl
ZnQgPSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmluZGV4IDI2OWNmMzFlZTdhODJhNzAxMTdh
ODViMDNjYWM1YjQzYWNmMmQyN2YuLmEzMDA3YjFjNjRlNTM3MDRjZTFjNWYzYjBhNzM1OWUxZDRk
NjE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlv
blBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBh
cnNlci5oCkBAIC04NCw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250
ZXh0Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBh
cnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCBsb2NhbEluZGV4KTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRM
b2NhbEV4cHJlc3Npb25JMzIoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgV0FT
TU9wRXhwcmVzc2lvbkkzMik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRF
eHByZXNzaW9uIHBhcnNlQmluYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgV0FTTU9wRXhwcmVz
c2lvbkkzMik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9u
IHBhcnNlUmVsYXRpb25hbEkzMkV4cHJlc3Npb25JMzIoQ29udGV4dCYsIFdBU01PcEV4cHJlc3Np
b25JMzIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVu
Y3Rpb25TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVu
Y3Rpb25TeW50YXhDaGVja2VyLmgKaW5kZXggNTE5ODU1M2U0MzgwNDE3NTIyMTcxZGE4YjY2Y2Ex
Y2VlN2NhMGM0MS4uYTg0NWU5ZTFlZGI4YjkxODk5NzE5YTg2NGMzMTE3MmIzYjBlMGU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRh
eENoZWNrZXIuaApAQCAtNzIsNiArNzIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVU5V
U0VEOwogICAgIH0KIAorICAgIGludCBidWlsZFVuYXJ5STMyKGludCwgV0FTTU9wRXhwcmVzc2lv
bkkzMikKKyAgICB7CisgICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAgfQorCiAgICAgaW50IGJ1
aWxkQmluYXJ5STMyKGludCwgaW50LCBXQVNNT3BFeHByZXNzaW9uSTMyKQogICAgIHsKICAgICAg
ICAgbV90ZW1wU3RhY2tUb3AtLTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>