<?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>165733</bug_id>
          
          <creation_ts>2016-12-10 13:38:57 -0800</creation_ts>
          <short_desc>WebAssembly API: improve data section errors</short_desc>
          <delta_ts>2016-12-15 14:09:23 -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>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>165696</dependson>
          <blocked>163919</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</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>1258750</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-10 13:38:57 -0800</bug_when>
    <thetext>As suggested in bug #165696.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258751</commentid>
    <comment_count>1</comment_count>
      <attachid>296820</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-10 13:41:56 -0800</bug_when>
    <thetext>Created attachment 296820
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259283</commentid>
    <comment_count>2</comment_count>
      <attachid>296820</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-12 17:14:48 -0800</bug_when>
    <thetext>Comment on attachment 296820
patch

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

&gt; JSTests/wasm/js-api/test_Data.js:58
&gt; +(function DataSectionWithoutMemory() {
&gt; +    const builder = (new Builder())
&gt; +        .Type().End()
&gt; +        .Data()
&gt; +          .Segment([0xff]).Offset(0).End()
&gt; +        .End();
&gt; +    const bin = builder.WebAssembly().get();
&gt; +    const module = new WebAssembly.Module(bin);
&gt; +    const memory = new WebAssembly.Memory(memoryDescription);
&gt; +    assert.throws(() =&gt; new WebAssembly.Instance(module, { imp: { memory: memory } }), RangeError, `cannot initialize non-zero data segments when no memory is present`);
&gt; +})();

This sure looks like it should be a validation error.

&gt; JSTests/wasm/js-api/test_Data.js:70
&gt; +(function EmptyDataSectionWithoutMemory() {
&gt; +    const builder = (new Builder())
&gt; +        .Type().End()
&gt; +        .Data()
&gt; +          .Segment([]).Offset(0).End()
&gt; +        .End();
&gt; +    const bin = builder.WebAssembly().get();
&gt; +    const module = new WebAssembly.Module(bin);
&gt; +    const memory = new WebAssembly.Memory(memoryDescription);
&gt; +    const instance = new WebAssembly.Instance(module, { imp: { memory: memory } });
&gt; +})();

Ditto

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:218
&gt; +    } else {
&gt; +        for (auto&amp; segment : data) {
&gt; +            if (UNLIKELY(segment-&gt;sizeInBytes))
&gt; +                return throwException(state, scope, createRangeError(state, makeString(ASCIILiteral(&quot;cannot initialize non-zero data segments when no memory is present&quot;))));
&gt; +        }
&gt;      }

This seems like it should be caught by validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259472</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-13 11:44:11 -0800</bug_when>
    <thetext>Andreas doesn&apos;t seem to want to move things to validation time:
https://github.com/WebAssembly/design/issues/897#issuecomment-266505611

I proposed some clarifications here:
https://github.com/WebAssembly/design/pull/902

For now I&apos;d just go with what I implemented, and revisit when we reach spec consensus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259615</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-13 19:18:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Andreas doesn&apos;t seem to want to move things to validation time:
&gt; https://github.com/WebAssembly/design/issues/897#issuecomment-266505611
&gt; 
&gt; I proposed some clarifications here:
&gt; https://github.com/WebAssembly/design/pull/902
&gt; 
&gt; For now I&apos;d just go with what I implemented, and revisit when we reach spec
&gt; consensus.

Using a Data when no memory is present is definitely a validation error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259616</commentid>
    <comment_count>5</comment_count>
      <attachid>296820</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-13 19:18:40 -0800</bug_when>
    <thetext>Comment on attachment 296820
patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:202
&gt; +    if (memory) {

This should turn into an assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259805</commentid>
    <comment_count>6</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-14 10:25:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Andreas doesn&apos;t seem to want to move things to validation time:
&gt; &gt; https://github.com/WebAssembly/design/issues/897#issuecomment-266505611
&gt; &gt; 
&gt; &gt; I proposed some clarifications here:
&gt; &gt; https://github.com/WebAssembly/design/pull/902
&gt; &gt; 
&gt; &gt; For now I&apos;d just go with what I implemented, and revisit when we reach spec
&gt; &gt; consensus.
&gt; 
&gt; Using a Data when no memory is present is definitely a validation error.

Is it? I can make it so, but we don&apos;t do that at the moment and I&apos;m not sure the spec says so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260165</commentid>
    <comment_count>7</comment_count>
      <attachid>297197</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-15 10:17:04 -0800</bug_when>
    <thetext>Created attachment 297197
patch

Address comments, this is now ready for landing (and blocks bug #163919).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260182</commentid>
    <comment_count>8</comment_count>
      <attachid>297197</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-15 11:13:56 -0800</bug_when>
    <thetext>Comment on attachment 297197
patch

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

r=me with comments.

&gt; JSTests/wasm/js-api/element-data.js:8
&gt; +(function ElementBeforeData() {

What&apos;s the advantage of wrapping this in a function?

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:197
&gt; +template &lt;typename Scope, typename N, typename ...Args&gt;

Why is N needed it looks like you only use it with size_t anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260239</commentid>
    <comment_count>9</comment_count>
      <attachid>297197</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-15 13:43:58 -0800</bug_when>
    <thetext>Comment on attachment 297197
patch

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

&gt;&gt; JSTests/wasm/js-api/element-data.js:8
&gt;&gt; +(function ElementBeforeData() {
&gt; 
&gt; What&apos;s the advantage of wrapping this in a function?

I&apos;ve been doing that for all the tests: it appears in the stack traces if it fails, and it&apos;s simpler than having a comment IMO.

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:197
&gt;&gt; +template &lt;typename Scope, typename N, typename ...Args&gt;
&gt; 
&gt; Why is N needed it looks like you only use it with size_t anyway?

It just means we don&apos;t have to change the type if it changes at the call site (and we don&apos;t get inadvertent coercion). It also catch cases where the 3 parameters don&apos;t have the same type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260250</commentid>
    <comment_count>10</comment_count>
      <attachid>297197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 14:09:19 -0800</bug_when>
    <thetext>Comment on attachment 297197
patch

Clearing flags on attachment: 297197

Committed r209874: &lt;http://trac.webkit.org/changeset/209874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260251</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 14:09:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296820</attachid>
            <date>2016-12-10 13:41:56 -0800</date>
            <delta_ts>2016-12-15 10:17:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-data-section-errors.patch</filename>
            <type>text/plain</type>
            <size>11017</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzYjhjMTBhNTEyNmY3OTBlZWI5ODdiNjY1OWQ4OTlkODlmMjRiYWIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDEwIERlYyAyMDE2IDEzOjM5OjUxIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZGF0YS1z
ZWN0aW9uLWVycm9ycwoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDE2ICsrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfRGF0YS5q
cyAgICAgICAgICAgICAgICAgICB8IDgzICsrKysrKysrKysrKysrKysrLS0tLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrCiAuLi4v
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgICAgICAgICAgICB8IDM0ICsrKysr
LS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCAyY2IxNjQ3Li40NDAwNzNhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTEwICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBBUEk6IGltcHJv
dmUgZGF0YSBzZWN0aW9uIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1NzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMsIGFuZCBjaGVjayBmb3IgdGhlIG5ldyBhbmQg
aW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMuCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X0Rh
dGEuanM6CisgICAgICAgIChEYXRhU2VjdGlvbldpdGhvdXRNZW1vcnkpOgorICAgICAgICAoRGF0
YVNlY3Rpb25PZmZUaGVFbmQpOgorICAgICAgICAoRGF0YVNlY3Rpb25QYXJ0bHlPZmZUaGVFbmQp
OgorICAgICAgICAoRGF0YVNlY3Rpb25FbXB0eU9mZlRoZUVuZCk6CisgICAgICAgIChEYXRhU2Vj
dGlvbkVtcHR5T2ZmVGhlRW5kV2l0aEVtcHR5TWVtb3J5KToKKwogMjAxNi0xMi0xMCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5kaXJlY3Rf
Y2FsbCBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvdGVzdF9EYXRhLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0RhdGEuanMK
aW5kZXggODBiNWU3OS4uMTAwMTk3YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS90
ZXN0X0RhdGEuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0RhdGEuanMKQEAgLTQs
OSArNCwxOCBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIGNvbnN0IG1l
bVNpemVJblBhZ2VzID0gMTsKIGNvbnN0IHBhZ2VTaXplSW5CeXRlcyA9IDY0ICogMTAyNDsKIGNv
bnN0IG1lbW9yeURlc2NyaXB0aW9uID0geyBpbml0aWFsOiBtZW1TaXplSW5QYWdlcywgbWF4aW11
bTogbWVtU2l6ZUluUGFnZXMgfTsKK2NvbnN0IGVtcHR5TWVtb3J5ID0geyBpbml0aWFsOiAwLCBt
YXhpbXVtOiAyIH07CiAKIC8vIEZJWE1FIFNvbWUgY29ybmVyIGNhc2VzIGFyZSBpbGwtc3BlY2lm
aWVkOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lzc3Vlcy84OTcKIAor
Y29uc3QgYXNzZXJ0TWVtb3J5QWxsWmVybyA9IG1lbW9yeSA9PiB7CisgICAgY29uc3QgYnVmZmVy
ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7CisgICAgZm9yIChsZXQgaWR4ID0gMDsg
aWR4IDwgYnVmZmVyLmxlbmd0aDsgKytpZHgpIHsKKyAgICAgICAgY29uc3QgdmFsdWUgPSBidWZm
ZXJbaWR4XTsKKyAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCAweDAwKTsKKyAgICB9Cit9OworCiAo
ZnVuY3Rpb24gRGF0YVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRl
cigpKQogICAgICAgICAuVHlwZSgpLkVuZCgpCkBAIC0zNiw2ICs0NSw0NCBAQCBjb25zdCBtZW1v
cnlEZXNjcmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFnZXMsIG1heGltdW06IG1lbVNp
emVJblBhZ2VzIH07CiAgICAgfQogfSkoKTsKIAorKGZ1bmN0aW9uIERhdGFTZWN0aW9uV2l0aG91
dE1lbW9yeSgpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAg
IC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkRhdGEoKQorICAgICAgICAgIC5TZWdtZW50KFsweGZm
XSkuT2Zmc2V0KDApLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAgICBjb25zdCBiaW4gPSBidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOworICAgIGNvbnN0IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1v
cnkobWVtb3J5RGVzY3JpcHRpb24pOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5OiBtZW1vcnkgfSB9KSwgUmFu
Z2VFcnJvciwgYGNhbm5vdCBpbml0aWFsaXplIG5vbi16ZXJvIGRhdGEgc2VnbWVudHMgd2hlbiBu
byBtZW1vcnkgaXMgcHJlc2VudGApOworfSkoKTsKKworKGZ1bmN0aW9uIEVtcHR5RGF0YVNlY3Rp
b25XaXRob3V0TWVtb3J5KCkgeworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkK
KyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRGF0YSgpCisgICAgICAgICAgLlNlZ21l
bnQoW10pLk9mZnNldCgwKS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0g
YnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KG1lbW9yeURlc2NyaXB0aW9uKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSk7Cit9
KSgpOworCisoZnVuY3Rpb24gRGF0YVNlY3Rpb25CaWdnZXJUaGFuTWVtb3J5KCkgeworICAgIGNv
bnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAuSW1wb3J0KCkuTWVtb3J5KCJpbXAiLCAibWVtb3J5IiwgbWVtb3J5RGVzY3JpcHRpb24p
LkVuZCgpCisgICAgICAgIC5EYXRhKCkKKyAgICAgICAgICAuU2VnbWVudChBcnJheShtZW1TaXpl
SW5QYWdlcyAqIHBhZ2VTaXplSW5CeXRlcyArIDEpLmZpbGwoMHhmZikpLk9mZnNldCgwKS5FbmQo
KQorICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgp
LmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsK
KyAgICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0
aW9uKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBJbnZhbGlk
IGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiA2NTUzNyBieXRlcyBtZW1v
cnkgb2YgNjU1MzYgYnl0ZXMsIGF0IG9mZnNldCAwLCBzZWdtZW50IGlzIHRvbyBiaWdgKTsKKyAg
ICBhc3NlcnRNZW1vcnlBbGxaZXJvKG1lbW9yeSk7Cit9KSgpOworCiAoZnVuY3Rpb24gRGF0YVNl
Y3Rpb25PZmZUaGVFbmQoKSB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQog
ICAgICAgICAuVHlwZSgpLkVuZCgpCkBAIC00NiwxMiArOTMsOCBAQCBjb25zdCBtZW1vcnlEZXNj
cmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFnZXMsIG1heGltdW06IG1lbVNpemVJblBh
Z2VzIH07CiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwogICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKICAgICBjb25zdCBt
ZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0aW9uKTsKLSAgICBh
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1w
OiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBEYXRhIHNlZ21lbnQgaW5pdGlh
bGl6ZXMgbWVtb3J5IG91dCBvZiByYW5nZWApOwotICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50
OEFycmF5KG1lbW9yeS5idWZmZXIpOwotICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG1lbVNp
emVJblBhZ2VzICogcGFnZVNpemVJbkJ5dGVzOyArK2lkeCkgewotICAgICAgICBjb25zdCB2YWx1
ZSA9IGJ1ZmZlcltpZHhdOwotICAgICAgICBhc3NlcnQuZXEodmFsdWUsIDB4MDApOwotICAgIH0K
KyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBJbnZhbGlkIGRhdGEg
c2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAxIGJ5dGVzIG1lbW9yeSBvZiA2NTUz
NiBieXRlcywgYXQgb2Zmc2V0IDY1NTM2LCBzZWdtZW50IHdyaXRlcyBvdXRzaWRlIG9mIG1lbW9y
eWApOworICAgIGFzc2VydE1lbW9yeUFsbFplcm8obWVtb3J5KTsKIH0pKCk7CiAKIChmdW5jdGlv
biBEYXRhU2VjdGlvblBhcnRseU9mZlRoZUVuZCgpIHsKQEAgLTY0LDEyICsxMDcsOCBAQCBjb25z
dCBtZW1vcnlEZXNjcmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFnZXMsIG1heGltdW06
IG1lbVNpemVJblBhZ2VzIH07CiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgp
LmdldCgpOwogICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsK
ICAgICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0
aW9uKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBEYXRhIHNl
Z21lbnQgaW5pdGlhbGl6ZXMgbWVtb3J5IG91dCBvZiByYW5nZWApOwotICAgIGNvbnN0IGJ1ZmZl
ciA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpOwotICAgIGZvciAobGV0IGlkeCA9IDA7
IGlkeCA8IG1lbVNpemVJblBhZ2VzICogcGFnZVNpemVJbkJ5dGVzOyArK2lkeCkgewotICAgICAg
ICBjb25zdCB2YWx1ZSA9IGJ1ZmZlcltpZHhdOwotICAgICAgICBhc3NlcnQuZXEodmFsdWUsIDB4
MDApOwotICAgIH0KKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBJ
bnZhbGlkIGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAyIGJ5dGVzIG1l
bW9yeSBvZiA2NTUzNiBieXRlcywgYXQgb2Zmc2V0IDY1NTM1LCBzZWdtZW50IHdyaXRlcyBvdXRz
aWRlIG9mIG1lbW9yeWApOworICAgIGFzc2VydE1lbW9yeUFsbFplcm8obWVtb3J5KTsKIH0pKCk7
CiAKIChmdW5jdGlvbiBEYXRhU2VjdGlvbkVtcHR5T2ZmVGhlRW5kKCkgewpAQCAtODMsMTEgKzEy
MiwyMSBAQCBjb25zdCBtZW1vcnlEZXNjcmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFn
ZXMsIG1heGltdW06IG1lbVNpemVJblBhZ2VzIH07CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShiaW4pOwogICAgIGNvbnN0IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJs
eS5NZW1vcnkobWVtb3J5RGVzY3JpcHRpb24pOwogICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5OiBtZW1vcnkgfSB9KTsK
LSAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTsKLSAgICBm
b3IgKGxldCBpZHggPSAwOyBpZHggPCBtZW1TaXplSW5QYWdlcyAqIHBhZ2VTaXplSW5CeXRlczsg
KytpZHgpIHsKLSAgICAgICAgY29uc3QgdmFsdWUgPSBidWZmZXJbaWR4XTsKLSAgICAgICAgYXNz
ZXJ0LmVxKHZhbHVlLCAweDAwKTsKLSAgICB9CisgICAgYXNzZXJ0TWVtb3J5QWxsWmVybyhtZW1v
cnkpOworfSkoKTsKKworKGZ1bmN0aW9uIERhdGFTZWN0aW9uRW1wdHlPZmZUaGVFbmRXaXRoRW1w
dHlNZW1vcnkoKSB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAg
ICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5JbXBvcnQoKS5NZW1vcnkoImltcCIsICJtZW1vcnki
LCBlbXB0eU1lbW9yeSkuRW5kKCkKKyAgICAgICAgLkRhdGEoKQorICAgICAgICAgIC5TZWdtZW50
KFtdKS5PZmZzZXQobWVtU2l6ZUluUGFnZXMgKiBwYWdlU2l6ZUluQnl0ZXMpLkVuZCgpCisgICAg
ICAgIC5FbmQoKTsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7
CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIGNv
bnN0IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoZW1wdHlNZW1vcnkpOworICAgIGNv
bnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsg
bWVtb3J5OiBtZW1vcnkgfSB9KTsKKyAgICBhc3NlcnRNZW1vcnlBbGxaZXJvKG1lbW9yeSk7CiB9
KSgpOwogCiAoZnVuY3Rpb24gRGF0YVNlY3Rpb25TZWVuQnlTdGFydCgpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IDAyODFmMGQuLjRhMWViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEyLTEwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBBUEk6IGltcHJvdmUgZGF0YSBzZWN0aW9u
IGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1NzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0
YVNlZ21lbnRGYWlsKTogZmFjdG9yIG91dCBjb21tb24gZXJyb3IgbWVzc2FnZXMKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKTogaW1wcm92ZSBlcnJvciBt
ZXNzYWdlcywgY2hlY2sgY29uZGl0aW9ucyBiZXR0ZXIKKwogMjAxNi0xMi0xMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5kaXJlY3RfY2Fs
bCBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA2N2Q1
ZTIyLi41YWU0Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0xODUsMjYgKzE4NSwzNiBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdAogICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCB0
aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBTY29wZSwg
dHlwZW5hbWUgTiwgdHlwZW5hbWUgLi4uQXJncz4KK05FVkVSX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBkYXRhU2VnbWVudEZhaWwoRXhlY1N0YXRlKiBzdGF0ZSwgU2NvcGUmIHNjb3BlLCBOIG1lbW9y
eVNpemUsIE4gc2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFyZ3MpCit7CisgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwg
bWFrZVN0cmluZyhBU0NJSUxpdGVyYWwoIkludmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0
aW9uOiBzZWdtZW50IG9mICIpLCBTdHJpbmc6Om51bWJlcihzZWdtZW50U2l6ZSksIEFTQ0lJTGl0
ZXJhbCgiIGJ5dGVzIG1lbW9yeSBvZiAiKSwgU3RyaW5nOjpudW1iZXIobWVtb3J5U2l6ZSksIEFT
Q0lJTGl0ZXJhbCgiIGJ5dGVzLCBhdCBvZmZzZXQgIiksIFN0cmluZzo6bnVtYmVyKG9mZnNldCks
IGFyZ3MuLi4pKSk7Cit9CisgICAgCiBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpl
dmFsdWF0ZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChKU1dl
YkFzc2VtYmx5TWVtb3J5KiBqc01lbW9yeSA9IG1faW5zdGFuY2UtPm1lbW9yeSgpKSB7Ci0gICAg
ICAgIHVpbnQ4X3QqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGpzTWVtb3J5
LT5tZW1vcnkoKS0+bWVtb3J5KCkpOworICAgIGNvbnN0IFZlY3RvcjxXYXNtOjpTZWdtZW50OjpQ
dHI+JiBkYXRhID0gbV9pbnN0YW5jZS0+bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9uKCkuZGF0
YTsKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBqc01lbW9yeSA9IG1faW5zdGFuY2UtPm1lbW9y
eSgpOworICAgIHVpbnQ4X3QqIG1lbW9yeSA9IGpzTWVtb3J5ID8gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oanNNZW1vcnktPm1lbW9yeSgpLT5tZW1vcnkoKSkgOiBudWxscHRyOworICAgIGlm
IChtZW1vcnkpIHsKICAgICAgICAgYXV0byBzaXplSW5CeXRlcyA9IGpzTWVtb3J5LT5tZW1vcnko
KS0+c2l6ZSgpOwotICAgICAgICBpZiAobWVtb3J5KSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0
b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1faW5zdGFuY2UtPm1vZHVsZSgpLT5tb2R1
bGVJbmZvcm1hdGlvbigpLmRhdGE7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBk
YXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnNpemVJbkJ5dGVzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChzaXplSW5CeXRlcyA8IHNlZ21lbnQtPnNpemVJbkJ5dGVzCi0g
ICAgICAgICAgICAgICAgICAgICAgICB8fCBzZWdtZW50LT5vZmZzZXQgPiBzaXplSW5CeXRlcwot
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2VnbWVudC0+b2Zmc2V0ID4gc2l6ZUluQnl0ZXMg
LSBzZWdtZW50LT5zaXplSW5CeXRlcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiRGF0YSBzZWdtZW50IGluaXRpYWxpemVzIG1lbW9yeSBvdXQgb2YgcmFuZ2UiKSkp
OwotICAgICAgICAgICAgICAgICAgICBtZW1jcHkobWVtb3J5ICsgc2VnbWVudC0+b2Zmc2V0LCAm
c2VnbWVudC0+Ynl0ZSgwKSwgc2VnbWVudC0+c2l6ZUluQnl0ZXMpOwotICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogZGF0YSkgeworICAgICAgICAgICAgaWYg
KHNlZ21lbnQtPnNpemVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNp
emVJbkJ5dGVzIDwgc2VnbWVudC0+c2l6ZUluQnl0ZXMpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YVNlZ21lbnRGYWlsKHN0YXRlLCBzY29wZSwgc2l6ZUluQnl0ZXMsIHNlZ21lbnQt
PnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQsIEFTQ0lJTGl0ZXJhbCgiLCBzZWdtZW50IGlz
IHRvbyBiaWciKSk7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNlZ21lbnQtPm9mZnNl
dCA+IHNpemVJbkJ5dGVzIC0gc2VnbWVudC0+c2l6ZUluQnl0ZXMpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZGF0YVNlZ21lbnRGYWlsKHN0YXRlLCBzY29wZSwgc2l6ZUluQnl0ZXMsIHNl
Z21lbnQtPnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQsIEFTQ0lJTGl0ZXJhbCgiLCBzZWdt
ZW50IHdyaXRlcyBvdXRzaWRlIG9mIG1lbW9yeSIpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHko
bWVtb3J5ICsgc2VnbWVudC0+b2Zmc2V0LCAmc2VnbWVudC0+Ynl0ZSgwKSwgc2VnbWVudC0+c2l6
ZUluQnl0ZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogZGF0YSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KHNlZ21lbnQtPnNpemVJbkJ5dGVzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiY2Fubm90IGluaXRpYWxpemUgbm9uLXplcm8gZGF0YSBzZWdtZW50cyB3aGVu
IG5vIG1lbW9yeSBpcyBwcmVzZW50IikpKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
V2ViQXNzZW1ibHlGdW5jdGlvbiogc3RhcnRGdW5jdGlvbiA9IG1fc3RhcnRGdW5jdGlvbi5nZXQo
KSkgewotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="319215"
          type_id="1"
          status="-"
          setter="saam"
    />
    <flag name="commit-queue"
          id="319216"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297197</attachid>
            <date>2016-12-15 10:17:04 -0800</date>
            <delta_ts>2016-12-15 14:09:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-data-section.patch</filename>
            <type>text/plain</type>
            <size>14438</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiZTMyODFlYTgxNGQxMWIwNmRkNWU3OTQzMzA4NzMzNWM1OWE0ZDVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDE1IERlYyAyMDE2IDEwOjE1OjEyIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gRGF0YSBz
ZWN0aW9uCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgMTcgKysrKysKIEpTVGVzdHMvd2FzbS9qcy1hcGkvZWxlbWVudC1kYXRhLmpzICAg
ICAgICAgICAgICAgIHwgNDcgKysrKysrKysrKysrKwogSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0
X0RhdGEuanMgICAgICAgICAgICAgICAgICAgfCA3OSArKysrKysrKysrKysrKysrKy0tLS0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDEzICsr
KysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwICAgIHwg
IDIgKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwICAgICAgICAgICAg
fCA0NCArKysrKysrLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTY4IGluc2VydGlvbnMoKyksIDM0
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9qcy1hcGkvZWxl
bWVudC1kYXRhLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBlNWVmYjNlLi5iYmMxZjdkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEyLTE1
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJs
eSBBUEk6IGltcHJvdmUgZGF0YSBzZWN0aW9uIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9lbGVtZW50LWRhdGEuanM6
IEFkZGVkLgorICAgICAgICAoRWxlbWVudEJlZm9yZURhdGEuc2V0IGNvbnN0KToKKyAgICAgICAg
KEVsZW1lbnRCZWZvcmVEYXRhKTogY2hlY2sgdGhlIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uLCB3
aGljaCBpcyBvYnNlcnZhYmxlIG9uIGZhaWx1cmUKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0
X0RhdGEuanM6CisgICAgICAgIChEYXRhU2VjdGlvbldpdGhvdXRNZW1vcnkpOgorICAgICAgICAo
RGF0YVNlY3Rpb25PZmZUaGVFbmQpOiBEZWxldGVkLgorICAgICAgICAoRGF0YVNlY3Rpb25QYXJ0
bHlPZmZUaGVFbmQpOiBEZWxldGVkLgorICAgICAgICAoRGF0YVNlY3Rpb25FbXB0eU9mZlRoZUVu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChEYXRhU2VjdGlvblNlZW5CeVN0YXJ0KTogRGVsZXRlZC4K
KwogMjAxNi0xMi0xNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWJBc3NlbWJseTogdGVzdF9CdWlsZGVySlNPTi5qcyBpcyBicm9rZW4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZWxlbWVudC1kYXRhLmpzIGIvSlNUZXN0cy93YXNt
L2pzLWFwaS9lbGVtZW50LWRhdGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODViZWMzNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZWxlbWVu
dC1kYXRhLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2NvbnN0
IG1lbVNpemVJblBhZ2VzID0gMTsKK2NvbnN0IHBhZ2VTaXplSW5CeXRlcyA9IDY0ICogMTAyNDsK
K2NvbnN0IG1lbW9yeURlc2NyaXB0aW9uID0geyBpbml0aWFsOiBtZW1TaXplSW5QYWdlcywgbWF4
aW11bTogbWVtU2l6ZUluUGFnZXMgfTsKKworKGZ1bmN0aW9uIEVsZW1lbnRCZWZvcmVEYXRhKCkg
eworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5F
bmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5NZW1vcnkoImltcCIsICJtZW1v
cnkiLCBtZW1vcnlEZXNjcmlwdGlvbikKKyAgICAgICAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxl
Iiwge2VsZW1lbnQ6ICJhbnlmdW5jIiwgaW5pdGlhbDogMTl9KSAvLyB1bnNwZWNpZmllZCBtYXhp
bXVtLgorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LkVsZW1lbnQoKQorICAgICAgICAgICAgLkVsZW1lbnQoe29mZnNldDogMTksIGZ1bmN0aW9uSW5k
aWNlczogWzAsIDAsIDAsIDAsIDBdfSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkK
KyAgICAgICAgICAgIC5GdW5jdGlvbigiZm9vIiwge3BhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMy
In0pCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDQyKQorICAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAgICAgICAgICAgIC5SZXR1
cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuRGF0YSgp
CisgICAgICAgICAgLlNlZ21lbnQoWzB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWZdKS5PZmZzZXQoMCku
RW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1i
bHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJp
bik7CisgICAgY29uc3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNj
cmlwdGlvbik7CisgICAgY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2VsZW1l
bnQ6ICJhbnlmdW5jIiwgaW5pdGlhbDogMTl9KTsKKyAgICBjb25zdCBpbXBvcnRzID0geworICAg
ICAgICBpbXA6IHsKKyAgICAgICAgICAgIG1lbW9yeTogbWVtb3J5LAorICAgICAgICAgICAgdGFi
bGU6IHRhYmxlLAorICAgICAgICB9CisgICAgfTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGltcG9ydHMpLCBSYW5nZUVycm9yLCBgRWxl
bWVudCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBib3VuZHMgdGFibGUgaW5kZXhgKTsKKyAg
ICAvLyBPbiBFbGVtZW50IGZhaWx1cmUsIHRoZSBEYXRhIHNlY3Rpb24gc2hvdWxkbid0IGhhdmUg
ZXhlY3V0ZWQuCisgICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZl
cik7CisgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbWVtU2l6ZUluUGFnZXMgKiBwYWdlU2l6
ZUluQnl0ZXM7ICsraWR4KSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0gYnVmZmVyW2lkeF07Cisg
ICAgICAgIGFzc2VydC5lcSh2YWx1ZSwgMHgwMCk7CisgICAgfQorfSkoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9EYXRhLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90
ZXN0X0RhdGEuanMKaW5kZXggODBiNWU3OS4uN2ViY2U5NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL2pzLWFwaS90ZXN0X0RhdGEuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0Rh
dGEuanMKQEAgLTQsOSArNCwxOCBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpz
JzsKIGNvbnN0IG1lbVNpemVJblBhZ2VzID0gMTsKIGNvbnN0IHBhZ2VTaXplSW5CeXRlcyA9IDY0
ICogMTAyNDsKIGNvbnN0IG1lbW9yeURlc2NyaXB0aW9uID0geyBpbml0aWFsOiBtZW1TaXplSW5Q
YWdlcywgbWF4aW11bTogbWVtU2l6ZUluUGFnZXMgfTsKK2NvbnN0IGVtcHR5TWVtb3J5ID0geyBp
bml0aWFsOiAwLCBtYXhpbXVtOiAyIH07CiAKIC8vIEZJWE1FIFNvbWUgY29ybmVyIGNhc2VzIGFy
ZSBpbGwtc3BlY2lmaWVkOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lz
c3Vlcy84OTcKIAorY29uc3QgYXNzZXJ0TWVtb3J5QWxsWmVybyA9IG1lbW9yeSA9PiB7CisgICAg
Y29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7CisgICAgZm9yIChs
ZXQgaWR4ID0gMDsgaWR4IDwgYnVmZmVyLmxlbmd0aDsgKytpZHgpIHsKKyAgICAgICAgY29uc3Qg
dmFsdWUgPSBidWZmZXJbaWR4XTsKKyAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCAweDAwKTsKKyAg
ICB9Cit9OworCiAoZnVuY3Rpb24gRGF0YVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYnVpbGRlciA9
IChuZXcgQnVpbGRlcigpKQogICAgICAgICAuVHlwZSgpLkVuZCgpCkBAIC0zNiw2ICs0NSw0MCBA
QCBjb25zdCBtZW1vcnlEZXNjcmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFnZXMsIG1h
eGltdW06IG1lbVNpemVJblBhZ2VzIH07CiAgICAgfQogfSkoKTsKIAorKGZ1bmN0aW9uIERhdGFT
ZWN0aW9uV2l0aG91dE1lbW9yeSgpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVy
KCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkRhdGEoKQorICAgICAgICAgIC5T
ZWdtZW50KFsweGZmXSkuT2Zmc2V0KDApLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAgICBjb25z
dCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbiksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJv
ciwgYGNvdWxkbid0IHBhcnNlIHNlY3Rpb24gRGF0YTogRGF0YSBzZWdtZW50cyAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pJylgKTsKK30pKCk7CisKKyhmdW5jdGlvbiBF
bXB0eURhdGFTZWN0aW9uV2l0aG91dE1lbW9yeSgpIHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5l
dyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkRhdGEoKQorICAg
ICAgICAgIC5TZWdtZW50KFtdKS5PZmZzZXQoMCkuRW5kKCkKKyAgICAgICAgLkVuZCgpOworICAg
IGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBhc3NlcnQudGhy
b3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKSwgV2ViQXNzZW1ibHkuQ29tcGls
ZUVycm9yLCBgY291bGRuJ3QgcGFyc2Ugc2VjdGlvbiBEYXRhOiBEYXRhIHNlZ21lbnRzIChldmFs
dWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbiknKWApOworfSkoKTsKKworKGZ1bmN0
aW9uIERhdGFTZWN0aW9uQmlnZ2VyVGhhbk1lbW9yeSgpIHsKKyAgICBjb25zdCBidWlsZGVyID0g
KG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgp
Lk1lbW9yeSgiaW1wIiwgIm1lbW9yeSIsIG1lbW9yeURlc2NyaXB0aW9uKS5FbmQoKQorICAgICAg
ICAuRGF0YSgpCisgICAgICAgICAgLlNlZ21lbnQoQXJyYXkobWVtU2l6ZUluUGFnZXMgKiBwYWdl
U2l6ZUluQnl0ZXMgKyAxKS5maWxsKDB4ZmYpKS5PZmZzZXQoMCkuRW5kKCkKKyAgICAgICAgLkVu
ZCgpOworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBj
b25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7CisgICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDog
eyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgSW52YWxpZCBkYXRhIHNlZ21lbnQg
aW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgNjU1MzcgYnl0ZXMgbWVtb3J5IG9mIDY1NTM2IGJ5
dGVzLCBhdCBvZmZzZXQgMCwgc2VnbWVudCBpcyB0b28gYmlnYCk7CisgICAgYXNzZXJ0TWVtb3J5
QWxsWmVybyhtZW1vcnkpOworfSkoKTsKKwogKGZ1bmN0aW9uIERhdGFTZWN0aW9uT2ZmVGhlRW5k
KCkgewogICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLlR5cGUo
KS5FbmQoKQpAQCAtNDYsMTIgKzg5LDggQEAgY29uc3QgbWVtb3J5RGVzY3JpcHRpb24gPSB7IGlu
aXRpYWw6IG1lbVNpemVJblBhZ2VzLCBtYXhpbXVtOiBtZW1TaXplSW5QYWdlcyB9OwogICAgIGNv
bnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKICAgICBjb25zdCBtb2R1bGUg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAgICAgY29uc3QgbWVtb3J5ID0gbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7Ci0gICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBtZW1vcnk6IG1l
bW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgRGF0YSBzZWdtZW50IGluaXRpYWxpemVzIG1lbW9yeSBv
dXQgb2YgcmFuZ2VgKTsKLSAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShtZW1vcnku
YnVmZmVyKTsKLSAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBtZW1TaXplSW5QYWdlcyAqIHBh
Z2VTaXplSW5CeXRlczsgKytpZHgpIHsKLSAgICAgICAgY29uc3QgdmFsdWUgPSBidWZmZXJbaWR4
XTsKLSAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCAweDAwKTsKLSAgICB9CisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBtZW1v
cnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgSW52YWxpZCBkYXRhIHNlZ21lbnQgaW5pdGlh
bGl6YXRpb246IHNlZ21lbnQgb2YgMSBieXRlcyBtZW1vcnkgb2YgNjU1MzYgYnl0ZXMsIGF0IG9m
ZnNldCA2NTUzNiwgc2VnbWVudCB3cml0ZXMgb3V0c2lkZSBvZiBtZW1vcnlgKTsKKyAgICBhc3Nl
cnRNZW1vcnlBbGxaZXJvKG1lbW9yeSk7CiB9KSgpOwogCiAoZnVuY3Rpb24gRGF0YVNlY3Rpb25Q
YXJ0bHlPZmZUaGVFbmQoKSB7CkBAIC02NCwxMiArMTAzLDggQEAgY29uc3QgbWVtb3J5RGVzY3Jp
cHRpb24gPSB7IGluaXRpYWw6IG1lbVNpemVJblBhZ2VzLCBtYXhpbXVtOiBtZW1TaXplSW5QYWdl
cyB9OwogICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKICAgICBj
b25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAgICAgY29uc3QgbWVt
b3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDog
eyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgRGF0YSBzZWdtZW50IGluaXRpYWxp
emVzIG1lbW9yeSBvdXQgb2YgcmFuZ2VgKTsKLSAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhB
cnJheShtZW1vcnkuYnVmZmVyKTsKLSAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBtZW1TaXpl
SW5QYWdlcyAqIHBhZ2VTaXplSW5CeXRlczsgKytpZHgpIHsKLSAgICAgICAgY29uc3QgdmFsdWUg
PSBidWZmZXJbaWR4XTsKLSAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCAweDAwKTsKLSAgICB9Cisg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
IGltcDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgSW52YWxpZCBkYXRhIHNl
Z21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgMiBieXRlcyBtZW1vcnkgb2YgNjU1MzYg
Ynl0ZXMsIGF0IG9mZnNldCA2NTUzNSwgc2VnbWVudCB3cml0ZXMgb3V0c2lkZSBvZiBtZW1vcnlg
KTsKKyAgICBhc3NlcnRNZW1vcnlBbGxaZXJvKG1lbW9yeSk7CiB9KSgpOwogCiAoZnVuY3Rpb24g
RGF0YVNlY3Rpb25FbXB0eU9mZlRoZUVuZCgpIHsKQEAgLTgzLDExICsxMTgsMjEgQEAgY29uc3Qg
bWVtb3J5RGVzY3JpcHRpb24gPSB7IGluaXRpYWw6IG1lbVNpemVJblBhZ2VzLCBtYXhpbXVtOiBt
ZW1TaXplSW5QYWdlcyB9OwogICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoYmluKTsKICAgICBjb25zdCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9y
eURlc2NyaXB0aW9uKTsKICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSk7Ci0gICAgY29uc3QgYnVm
ZmVyID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7Ci0gICAgZm9yIChsZXQgaWR4ID0g
MDsgaWR4IDwgbWVtU2l6ZUluUGFnZXMgKiBwYWdlU2l6ZUluQnl0ZXM7ICsraWR4KSB7Ci0gICAg
ICAgIGNvbnN0IHZhbHVlID0gYnVmZmVyW2lkeF07Ci0gICAgICAgIGFzc2VydC5lcSh2YWx1ZSwg
MHgwMCk7Ci0gICAgfQorICAgIGFzc2VydE1lbW9yeUFsbFplcm8obWVtb3J5KTsKK30pKCk7CisK
KyhmdW5jdGlvbiBEYXRhU2VjdGlvbkVtcHR5T2ZmVGhlRW5kV2l0aEVtcHR5TWVtb3J5KCkgewor
ICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuSW1wb3J0KCkuTWVtb3J5KCJpbXAiLCAibWVtb3J5IiwgZW1wdHlNZW1vcnkp
LkVuZCgpCisgICAgICAgIC5EYXRhKCkKKyAgICAgICAgICAuU2VnbWVudChbXSkuT2Zmc2V0KG1l
bVNpemVJblBhZ2VzICogcGFnZVNpemVJbkJ5dGVzKS5FbmQoKQorICAgICAgICAuRW5kKCk7Cisg
ICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1v
ZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBtZW1vcnkgPSBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KGVtcHR5TWVtb3J5KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5
IH0gfSk7CisgICAgYXNzZXJ0TWVtb3J5QWxsWmVybyhtZW1vcnkpOwogfSkoKTsKIAogKGZ1bmN0
aW9uIERhdGFTZWN0aW9uU2VlbkJ5U3RhcnQoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCA0MzczZDI3Li5hYmQ2ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNi0xMi0xNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViQXNzZW1ibHkgQVBJOiBpbXByb3ZlIGRhdGEgc2VjdGlvbiBlcnJvcnMsIGluaXRp
YWxpemUgYWZ0ZXIgRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSk6IERhdGEgc2VjdGlvbiB3aXRob3V0IE1lbW9y
eSBzZWN0aW9uIG9yIGltcG9ydCBpcyBhIHZhbGlkYXRpb24gZXJyb3IKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0YVNlZ21l
bnRGYWlsKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRl
KTogdGlnaHRlbiBjaGVja3MgKHRob3VnaCB0aGUgc3BlYyBpc24ndCBmdWxseSBiYWtlZCksIGFu
ZCBtb3ZlIGFmdGVyIEVsZW1lbnQgaW5pdGlhbGl6YXRpb24KKwogMjAxNi0xMi0xNCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBk
ZWNvZGUgY29uc3RhbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTW9kdWxlUGFyc2VyLmNwcAppbmRleCBmYmRjM2MzLi4xZDI3ZGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcApAQCAtNzI0LDYg
KzcyNCw4IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUoR2xvYmFsJiBnbG9i
YWwpCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VEYXRhKCkKIHsKICAgICB1aW50MzJfdCBzZWdt
ZW50Q291bnQ7CisgICAgaWYgKCFtX21vZHVsZS0+bWVtb3J5KQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzZWdtZW50Q291bnQpCiAgICAgICAgIHx8IHNl
Z21lbnRDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkKICAgICAg
ICAgfHwgIW1fbW9kdWxlLT5kYXRhLnRyeVJlc2VydmVDYXBhY2l0eShzZWdtZW50Q291bnQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCmluZGV4IDQyMmQ1ZmMuLmIwMTU0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKQEAgLTE5NCwyOCArMTk0LDE3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0CiAgICAgbV9t
b2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAor
dGVtcGxhdGUgPHR5cGVuYW1lIFNjb3BlLCB0eXBlbmFtZSBOLCB0eXBlbmFtZSAuLi5BcmdzPgor
TkVWRVJfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGRhdGFTZWdtZW50RmFpbChFeGVjU3RhdGUqIHN0
YXRlLCBTY29wZSYgc2NvcGUsIE4gbWVtb3J5U2l6ZSwgTiBzZWdtZW50U2l6ZSwgTiBvZmZzZXQs
IEFyZ3MuLi4gYXJncykKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBkYXRhIHNlZ21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgIiksIFN0cmluZzo6bnVt
YmVyKHNlZ21lbnRTaXplKSwgQVNDSUlMaXRlcmFsKCIgYnl0ZXMgbWVtb3J5IG9mICIpLCBTdHJp
bmc6Om51bWJlcihtZW1vcnlTaXplKSwgQVNDSUlMaXRlcmFsKCIgYnl0ZXMsIGF0IG9mZnNldCAi
KSwgU3RyaW5nOjpudW1iZXIob2Zmc2V0KSwgYXJncy4uLikpKTsKK30KKwogSlNWYWx1ZSBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBpZiAoSlNXZWJBc3NlbWJseU1lbW9yeSoganNNZW1vcnkgPSBtX2luc3Rh
bmNlLT5tZW1vcnkoKSkgewotICAgICAgICB1aW50OF90KiBtZW1vcnkgPSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihqc01lbW9yeS0+bWVtb3J5KCktPm1lbW9yeSgpKTsKLSAgICAgICAgYXV0
byBzaXplSW5CeXRlcyA9IGpzTWVtb3J5LT5tZW1vcnkoKS0+c2l6ZSgpOwotICAgICAgICBpZiAo
bWVtb3J5KSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYg
ZGF0YSA9IG1faW5zdGFuY2UtPm1vZHVsZSgpLT5tb2R1bGVJbmZvcm1hdGlvbigpLmRhdGE7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHNlZ21lbnQtPnNpemVJbkJ5dGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaXpl
SW5CeXRlcyA8IHNlZ21lbnQtPnNpemVJbkJ5dGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB8
fCBzZWdtZW50LT5vZmZzZXQgPiBzaXplSW5CeXRlcwotICAgICAgICAgICAgICAgICAgICAgICAg
fHwgc2VnbWVudC0+b2Zmc2V0ID4gc2l6ZUluQnl0ZXMgLSBzZWdtZW50LT5zaXplSW5CeXRlcykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRGF0YSBzZWdtZW50IGlu
aXRpYWxpemVzIG1lbW9yeSBvdXQgb2YgcmFuZ2UiKSkpOwotICAgICAgICAgICAgICAgICAgICBt
ZW1jcHkobWVtb3J5ICsgc2VnbWVudC0+b2Zmc2V0LCAmc2VnbWVudC0+Ynl0ZSgwKSwgc2VnbWVu
dC0+c2l6ZUluQnl0ZXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQogICAgIHsKICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
ID0gbV9pbnN0YW5jZS0+bW9kdWxlKCk7CiAgICAgICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9y
bWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKTsK
QEAgLTI2MSwxMiArMjUwLDMzIEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICB7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxXYXNtOjpTZWdtZW50OjpQdHI+JiBkYXRhID0gbV9pbnN0YW5jZS0+
bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9uKCkuZGF0YTsKKyAgICAgICAgSlNXZWJBc3NlbWJs
eU1lbW9yeSoganNNZW1vcnkgPSBtX2luc3RhbmNlLT5tZW1vcnkoKTsKKyAgICAgICAgaWYgKCFk
YXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoanNNZW1vcnkpOyAv
LyBJdCBpcyBhIHZhbGlkYXRpb24gZXJyb3IgZm9yIGEgRGF0YSBzZWN0aW9uIHRvIGV4aXN0IHdp
dGhvdXQgYSBNZW1vcnkgc2VjdGlvbiBvciBpbXBvcnQuCisgICAgICAgICAgICB1aW50OF90KiBt
ZW1vcnkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihqc01lbW9yeS0+bWVtb3J5KCktPm1l
bW9yeSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeSk7CisgICAgICAgICAg
ICBhdXRvIHNpemVJbkJ5dGVzID0ganNNZW1vcnktPm1lbW9yeSgpLT5zaXplKCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBkYXRhKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
Z21lbnQtPnNpemVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShz
aXplSW5CeXRlcyA8IHNlZ21lbnQtPnNpemVJbkJ5dGVzKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBkYXRhU2VnbWVudEZhaWwoc3RhdGUsIHNjb3BlLCBzaXplSW5CeXRlcywgc2Vn
bWVudC0+c2l6ZUluQnl0ZXMsIHNlZ21lbnQtPm9mZnNldCwgQVNDSUlMaXRlcmFsKCIsIHNlZ21l
bnQgaXMgdG9vIGJpZyIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNlZ21l
bnQtPm9mZnNldCA+IHNpemVJbkJ5dGVzIC0gc2VnbWVudC0+c2l6ZUluQnl0ZXMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFTZWdtZW50RmFpbChzdGF0ZSwgc2NvcGUsIHNp
emVJbkJ5dGVzLCBzZWdtZW50LT5zaXplSW5CeXRlcywgc2VnbWVudC0+b2Zmc2V0LCBBU0NJSUxp
dGVyYWwoIiwgc2VnbWVudCB3cml0ZXMgb3V0c2lkZSBvZiBtZW1vcnkiKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1lbWNweShtZW1vcnkgKyBzZWdtZW50LT5vZmZzZXQsICZzZWdtZW50LT5ieXRl
KDApLCBzZWdtZW50LT5zaXplSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKFdlYkFzc2VtYmx5RnVuY3Rpb24qIHN0
YXJ0RnVuY3Rpb24gPSBtX3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKICAgICAgICAgUHJvdG9DYWxs
RnJhbWUgcHJvdG9DYWxsRnJhbWU7CiAgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0
ciwgc3RhcnRGdW5jdGlvbiwgSlNWYWx1ZSgpLCAxLCBudWxscHRyKTsKICAgICAgICAgc3RhcnRG
dW5jdGlvbi0+Y2FsbCh2bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIAotLSAKMi4xMC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>