<?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>173414</bug_id>
          
          <creation_ts>2017-06-15 05:09:33 -0700</creation_ts>
          <short_desc>[JSC] Implement Object.assign in C++</short_desc>
          <delta_ts>2017-06-16 10:32:02 -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>
          
          <blocked>173416</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1319536</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 05:09:33 -0700</bug_when>
    <thetext>Implementing Object.assign in JS is not so good compared to C++ version because,

1. JS version allocates JS array for object own keys. And we allocate JSString / Symbol for each key.
But basically, they can be handled as UniquedStringImpl in C++. Allocating these cells are wasteful.

2. While implementing builtins in JS offers some good type speculation chances, Object.assign is inherently super polymorphic.
So JS&apos;s type profile doesn&apos;t help well.

3. We have a chance to introduce various fast path for Object.assign in C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319546</commentid>
    <comment_count>1</comment_count>
      <attachid>312972</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 05:41:37 -0700</bug_when>
    <thetext>Created attachment 312972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319548</commentid>
    <comment_count>2</comment_count>
      <attachid>312973</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 05:43:25 -0700</bug_when>
    <thetext>Created attachment 312973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319554</commentid>
    <comment_count>3</comment_count>
      <attachid>312973</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-15 06:23:38 -0700</bug_when>
    <thetext>Comment on attachment 312973
Patch

Attachment 312973 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/3935307

New failing tests:
ChakraCore.yaml/ChakraCore/test/es6/object-assign.js.default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319563</commentid>
    <comment_count>4</comment_count>
      <attachid>312978</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 07:01:12 -0700</bug_when>
    <thetext>Created attachment 312978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319564</commentid>
    <comment_count>5</comment_count>
      <attachid>312979</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 07:01:53 -0700</bug_when>
    <thetext>Created attachment 312979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319628</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 11:36:06 -0700</bug_when>
    <thetext>btw, it would make Speedometer2 Redux one fast since it heavily uses Object.assign.
When I previously optimized Object.assign a bit, that shows good improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319653</commentid>
    <comment_count>7</comment_count>
      <attachid>312979</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-06-15 12:10:56 -0700</bug_when>
    <thetext>Comment on attachment 312979
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:231
&gt; +ALWAYS_INLINE bool JSObject::putInline(ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
&gt; +{
&gt; +    auto putMethod = methodTable(exec-&gt;vm())-&gt;put;
&gt; +    if (LIKELY(putMethod == JSObject::put))
&gt; +        return JSObject::putInlineForJSObject(this, exec, propertyName, value, slot);
&gt; +    return putMethod(this, exec, propertyName, value, slot);
&gt; +}
&gt; +

JSValue::putInline, which calls this, also performs this same branch. Please remove it from JSValue::putInline since it can just directly call into this now.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt; +        RETURN_IF_EXCEPTION(scope, encodedJSValue());

style nit: { } instead of encodedJSValue()
(and below in the function)

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:343
&gt; +

nit: no need to exception check here given how this is used below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319656</commentid>
    <comment_count>8</comment_count>
      <attachid>312979</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 12:21:36 -0700</bug_when>
    <thetext>Comment on attachment 312979
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:231
&gt;&gt; +
&gt; 
&gt; JSValue::putInline, which calls this, also performs this same branch. Please remove it from JSValue::putInline since it can just directly call into this now.

I think we should move this function to JSCell (like, JSCell::putInline) b/c JSValue&apos;s JSCell* can include other types like JSString.
Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt;&gt; +        RETURN_IF_EXCEPTION(scope, encodedJSValue());
&gt; 
&gt; style nit: { } instead of encodedJSValue()
&gt; (and below in the function)

Changed, thanks :)

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:343
&gt;&gt; +
&gt; 
&gt; nit: no need to exception check here given how this is used below.

Right! Dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319658</commentid>
    <comment_count>9</comment_count>
      <attachid>312996</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 12:27:07 -0700</bug_when>
    <thetext>Created attachment 312996
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319664</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 12:37:26 -0700</bug_when>
    <thetext>Committed r218348: &lt;http://trac.webkit.org/changeset/218348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319849</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-15 20:34:43 -0700</bug_when>
    <thetext>https://perf.webkit.org/v3/#/charts?since=1496979192778&amp;paneList=((18-906))

Win!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320001</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-16 10:15:03 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #11)
&gt; https://perf.webkit.org/v3/#/charts?since=1496979192778&amp;paneList=((18-906))
&gt; 
&gt; Win!

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320002</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-16 10:16:09 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; (In reply to Yusuke Suzuki from comment #11)
&gt; &gt; https://perf.webkit.org/v3/#/charts?since=1496979192778&amp;paneList=((18-906))
&gt; &gt; 
&gt; &gt; Win!
&gt; 
&gt; Nice!

I really enjoy the timing of this given the following tweet - https://twitter.com/Catfish_Man/status/875127498933129217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320003</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-16 10:32:02 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; (In reply to Sam Weinig from comment #12)
&gt; &gt; (In reply to Yusuke Suzuki from comment #11)
&gt; &gt; &gt; https://perf.webkit.org/v3/#/charts?since=1496979192778&amp;paneList=((18-906))
&gt; &gt; &gt; 
&gt; &gt; &gt; Win!
&gt; &gt; 
&gt; &gt; Nice!
&gt; 
&gt; I really enjoy the timing of this given the following tweet -
&gt; https://twitter.com/Catfish_Man/status/875127498933129217

Yeah, implementing builtin in JS or C++ highly depends on the complexity of the target function, opportunity for inlining and Object Allocating Sinking, IC&apos;s effectiveness etc.
We need to choose one of them (JS or C++) carefully. It will offer great improvement that another cannot achieve!

In String.prototype.concat case, it is super simple. And its operation is already highly optimized in JS JIT. It encourages inlining, type speculation, DFG/FTL optimizations etc. It is worth implementing String.prototype.concat in JS.

On the other hand, Object.assign is a bit complex and polymorphic. Inlining, type speculation and JS JIT tier&apos;s optimization (including IC) do not help much for Object.assign. And by implementing it in C++, we can avoid several allocations. C++ implementation leads to high performance in this case.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312972</attachid>
            <date>2017-06-15 05:41:37 -0700</date>
            <delta_ts>2017-06-15 05:43:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173414-20170615214136.patch</filename>
            <type>text/plain</type>
            <size>9255</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjBhNjhmY2E4MWU1OWFiN2M1MDU1ZmVlYmQ5MjZiYTJhYjMxYTUyLi5mOTgwNzg5ZDAxM2ZkZTY2
MzFkMDM5ZDcwYTI2NWY2OGU1YmVlOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2lnbiBpbiBDKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBPYmplY3QuYXNzaWduIGluIEpTIGlzIG5vdCBzbyBnb29kIGNvbXBhcmVkIHRvIEMrKyB2ZXJz
aW9uIGJlY2F1c2UsCisKKyAgICAgICAgMS4gSlMgdmVyc2lvbiBhbGxvY2F0ZXMgSlMgYXJyYXkg
Zm9yIG9iamVjdCBvd24ga2V5cy4gQW5kIHdlIGFsbG9jYXRlIEpTU3RyaW5nIC8gU3ltYm9sIGZv
ciBlYWNoIGtleS4KKyAgICAgICAgQnV0IGJhc2ljYWxseSwgdGhleSBjYW4gYmUgaGFuZGxlZCBh
cyBVbmlxdWVkU3RyaW5nSW1wbCBpbiBDKysuIEFsbG9jYXRpbmcgdGhlc2UgY2VsbHMgYXJlIHdh
c3RlZnVsLgorCisgICAgICAgIDIuIFdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucyBpbiBKUyBv
ZmZlcnMgc29tZSBnb29kIHR5cGUgc3BlY3VsYXRpb24gY2hhbmNlcywgT2JqZWN0LmFzc2lnbiBp
cyBpbmhlcmVudGx5IHN1cGVyIHBvbHltb3JwaGljLgorICAgICAgICBTbyBKUydzIHR5cGUgcHJv
ZmlsZSBkb2Vzbid0IGhlbHAgd2VsbC4KKworICAgICAgICAzLiBXZSBoYXZlIGEgY2hhbmNlIHRv
IGludHJvZHVjZSB2YXJpb3VzIGZhc3QgcGF0aCBmb3IgT2JqZWN0LmFzc2lnbiBpbiBDKysuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBpbXBsZW1lbnRhdGlvbiBmcm9tIEpTIHRvIEMrKy4g
SXQgYWNoaWV2ZXMgdGhlIGFib3ZlICgxKSBhbmQgKDIpLiAoMykgaXMgZmlsZWQgaW4gWzFdLgor
CisgICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzQxNgorCisgICAgICAgICogYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanM6CisgICAgICAg
IChlbnRyaWVzKToKKyAgICAgICAgKGFzc2lnbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9y
QXNzaWduKToKKwogMjAxNy0wNi0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gT2JqZWN0aXZlLUMgY2xhc3Mgd2hvc2UgbmFtZSBiZWdpbnMgd2l0
aCBhbiB1bmRlcnNjb3JlIGNhbuKAmXQgYmUgZXhwb3J0ZWQgdG8gSmF2YVNjcmlwdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCmlu
ZGV4IDI2M2IyZmMwZWI1ODE2YzM3OTdjY2ExZDBkZTdhZTM4MzExNzllMzMuLjE0ZDNkNmMyMGQ5
YzljZDg0YzI1NWQzZmQ2ZGI5N2UxZWYwYTIyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKQEAgLTY2LDI2ICs2NiwzIEBA
IGZ1bmN0aW9uIGVudHJpZXMob2JqZWN0KQogICAgIAogICAgIHJldHVybiBAZW51bWVyYWJsZU93
blByb3BlcnRpZXMob2JqZWN0LCBAaXRlcmF0aW9uS2luZEtleVZhbHVlKTsKIH0KLQotZnVuY3Rp
b24gYXNzaWduKHRhcmdldC8qWyovLCAvKi4uLiovc291cmNlcy8qXSAqLykKLXsKLSAgICAidXNl
IHN0cmljdCI7Ci0KLSAgICBpZiAodGFyZ2V0ID09IG51bGwpCi0gICAgICAgIEB0aHJvd1R5cGVF
cnJvcigiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKLQotICAgIGxldCBvYmpUYXJnZXQgPSBAT2JqZWN0KHRhcmdl
dCk7Ci0gICAgZm9yIChsZXQgcyA9IDEsIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5n
dGg7IHMgPCBhcmd1bWVudHNMZW5ndGg7ICsrcykgewotICAgICAgICBsZXQgbmV4dFNvdXJjZSA9
IGFyZ3VtZW50c1tzXTsKLSAgICAgICAgaWYgKG5leHRTb3VyY2UgIT0gbnVsbCkgewotICAgICAg
ICAgICAgbGV0IGZyb20gPSBAT2JqZWN0KG5leHRTb3VyY2UpOwotICAgICAgICAgICAgbGV0IGtl
eXMgPSBAUmVmbGVjdC5Ab3duS2V5cyhmcm9tKTsKLSAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
LCBrZXlzTGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBrZXlzTGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBsZXQgbmV4dEtleSA9IGtleXNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKEBw
cm9wZXJ0eUlzRW51bWVyYWJsZShmcm9tLCBuZXh0S2V5KSkKLSAgICAgICAgICAgICAgICAgICAg
b2JqVGFyZ2V0W25leHRLZXldID0gZnJvbVtuZXh0S2V5XTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gb2JqVGFyZ2V0OwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDgwM2I5MDk2
N2MyMWEzYzIwMWRkYTIzYjAzYzI1OTUzOTJlMGI2ZTMuLjljYjg3NDYxNjY1NDdhNTM1OTUyNzUy
ZmQxZjFiOGI3N2VmNTUyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlOYW1lcyhFeGVjU3RhdGUqKTsKQEAgLTgyLDcgKzgzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9i
amVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2kKICAgaXNGcm96ZW4gICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRnJv
emVuICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXNFeHRlbnNpYmxl
ICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXMgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RD
b25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
LSAgYXNzaWduICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgYXNzaWduICAgICAgICAgICAg
ICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZW50
cmllcyAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKQEAgLTMwNSw2ICszMDYsNzQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvd25FbnVtZXJhYmxlUHJvcGVydHlLZXlzKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250
RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVjKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJPYmplY3QuYXNzaWdu
IHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
KTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICB1
bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IGFyZ3NDb3VudDsgKytpKSB7CisgICAgICAgIEpTVmFsdWUgc291cmNl
VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgaWYgKHNvdXJjZVZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
SlNPYmplY3QqIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmlu
Z3NBbmRTeW1ib2xzKTsKKyAgICAgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMoc291cmNlLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGFzc2lnbiA9IFsm
XSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNhbiBhdm9pZCB0aGlzIGVudW1lcmFibGUgbG9vayB1cCBieSBjaGVja2luZyBTdHJ1Y3R1cmUn
cyBzdGF0dXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTczNDE2CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzb3VyY2UsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAg
ICAgICBpZiAoIXNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291
cmNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNvdXJjZS0+Z2V0
KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworCisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlT
bG90KHRhcmdldCwgdHJ1ZSk7CisgICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZSh0YXJnZXQs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9OworCisgICAg
ICAgIC8vIEZpcnN0IGxvb3AgaXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1i
b2xzIHRvIGtlZXAgc3RhbmRhcmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgor
ICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93
bnByb3BlcnR5a2V5cworICAgICAgICBib29sIGZvdW5kU3ltYm9sID0gZmFsc2U7CisgICAgICAg
IHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IG51bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAg
Y29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgICAgIGZvdW5kU3ltYm9s
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgYXNzaWduKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChmb3VuZFN5bWJvbCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51
bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5
TmFtZSA9IHByb3BlcnRpZXNbal07CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpICYmICF2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzaWduKHByb3BlcnR5TmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldCk7Cit9CisKIC8vIEVTNiA2LjIuNC41IFRv
UHJvcGVydHlEZXNjcmlwdG9yCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy10b3Byb3BlcnR5ZGVzY3JpcHRvcgogYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTdiODY2OTJm
ODU3OGYzZTMyMjI2NGQ5NTc1MzkxNjkzNDk0ZDUxYS4uMzVhZDU2ZDMzNmFlMzc3Njk2Yjk0NGJk
Y2E1ZmMxMTdjNzc3OTEwNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2Jq
ZWN0LmFzc2lnbiBpbiBDKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RyZXNzL29iamVjdC1hc3NpZ24tc3RyaW5nLWZpcnN0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNvdXJjZS5nZXQgU3ltYm9sKToKKyAgICAg
ICAgKHNvdXJjZS5nZXQgMSk6CisgICAgICAgIChzb3VyY2UuZ2V0IGNvY29hKToKKwogMjAxNy0w
Ni0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNz
ZW1ibHk6IHJlbW92ZSBlbXB0eSB0ZXN0IGZpbGVzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtYXNzaWduLXN0cmluZy1maXJzdC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1h
c3NpZ24tc3RyaW5nLWZpcnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YzI0ODlmMjI3ZjJiM2Y5YzNhNjQx
M2ZiZTQ3ODhhMTEyNmY5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtYXNzaWduLXN0cmluZy1maXJzdC5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFy
IG9yZGVyID0gW107CisKK3ZhciBzb3VyY2UgPSB7CisgICAgZ2V0IFtTeW1ib2wuaXRlcmF0b3Jd
KCkKKyAgICB7CisgICAgICAgIG9yZGVyLnB1c2goYFN5bWJvbC5pdGVyYXRvcmApOworICAgICAg
ICByZXR1cm4gYFN5bWJvbC5pdGVyYXRvcmA7CisgICAgfSwKKworICAgIGdldCAxKCkKKyAgICB7
CisgICAgICAgIG9yZGVyLnB1c2goYDFgKTsKKyAgICAgICAgcmV0dXJuIGAxYDsKKyAgICB9LAor
CisgICAgZ2V0IGNvY29hKCkKKyAgICB7CisgICAgICAgIG9yZGVyLnB1c2goYGNvY29hYCk7Cisg
ICAgICAgIHJldHVybiBgY29jb2FgOworICAgIH0sCit9OworCit2YXIgcmVzdWx0ID0gT2JqZWN0
LmFzc2lnbih7fSwgc291cmNlKTsKK3Nob3VsZEJlKHJlc3VsdFsxXSwgYDFgKTsKK3Nob3VsZEJl
KHJlc3VsdC5jb2NvYSwgYGNvY29hYCk7CitzaG91bGRCZShyZXN1bHRbU3ltYm9sLml0ZXJhdG9y
XSwgYFN5bWJvbC5pdGVyYXRvcmApOworc2hvdWxkQmUob3JkZXIuam9pbignLCcpLCBgMSxjb2Nv
YSxTeW1ib2wuaXRlcmF0b3JgKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312973</attachid>
            <date>2017-06-15 05:43:25 -0700</date>
            <delta_ts>2017-06-15 07:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173414-20170615214324.patch</filename>
            <type>text/plain</type>
            <size>9512</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjBhNjhmY2E4MWU1OWFiN2M1MDU1ZmVlYmQ5MjZiYTJhYjMxYTUyLi4zOTE3ZGVjNWUyNTRmNTAz
M2JmYjJjNjJjZDJmZjQ3ZWUxYjMwNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2lnbiBpbiBDKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBPYmplY3QuYXNzaWduIGluIEpTIGlzIG5vdCBzbyBnb29kIGNvbXBhcmVkIHRvIEMrKyB2ZXJz
aW9uIGJlY2F1c2UsCisKKyAgICAgICAgMS4gSlMgdmVyc2lvbiBhbGxvY2F0ZXMgSlMgYXJyYXkg
Zm9yIG9iamVjdCBvd24ga2V5cy4gQW5kIHdlIGFsbG9jYXRlIEpTU3RyaW5nIC8gU3ltYm9sIGZv
ciBlYWNoIGtleS4KKyAgICAgICAgQnV0IGJhc2ljYWxseSwgdGhleSBjYW4gYmUgaGFuZGxlZCBh
cyBVbmlxdWVkU3RyaW5nSW1wbCBpbiBDKysuIEFsbG9jYXRpbmcgdGhlc2UgY2VsbHMgYXJlIHdh
c3RlZnVsLgorCisgICAgICAgIDIuIFdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucyBpbiBKUyBv
ZmZlcnMgc29tZSBnb29kIHR5cGUgc3BlY3VsYXRpb24gY2hhbmNlcywgT2JqZWN0LmFzc2lnbiBp
cyBpbmhlcmVudGx5IHN1cGVyIHBvbHltb3JwaGljLgorICAgICAgICBTbyBKUydzIHR5cGUgcHJv
ZmlsZSBkb2Vzbid0IGhlbHAgd2VsbC4KKworICAgICAgICAzLiBXZSBoYXZlIGEgY2hhbmNlIHRv
IGludHJvZHVjZSB2YXJpb3VzIGZhc3QgcGF0aCBmb3IgT2JqZWN0LmFzc2lnbiBpbiBDKysuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBpbXBsZW1lbnRhdGlvbiBmcm9tIEpTIHRvIEMrKy4g
SXQgYWNoaWV2ZXMgdGhlIGFib3ZlICgxKSBhbmQgKDIpLiAoMykgaXMgZmlsZWQgaW4gWzFdLgor
CisgICAgICAgIFdlIGNhbiBzZWUgMS43eCBpbXByb3ZlbWVudCBpbiBTaXhTcGVlZCBvYmplY3Qt
YXNzaWduLmVzNi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxp
bmUgICAgICAgICAgICAgICAgICBwYXRjaGVkCisKKyAgICAgICAgb2JqZWN0LWFzc2lnbi5lczYg
ICAgICA2NDcuNjc4MCstMjEuMDA4MSAgICBeICAgIDM3Mi42NDM5Ky01LjY5OTggICAgICAgIF4g
ZGVmaW5pdGVseSAxLjczODF4IGZhc3RlcgorCisKKyAgICAgICAgWzFdOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDE2CisKKyAgICAgICAgKiBidWlsdGlucy9P
YmplY3RDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMpOgorICAgICAgICAoYXNzaWdu
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24pOgorCiAyMDE3LTA2LTE0ICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBPYmplY3RpdmUt
QyBjbGFzcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUgY2Fu4oCZdCBiZSBl
eHBvcnRlZCB0byBKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKaW5kZXggMjYzYjJmYzBlYjU4MTZjMzc5N2NjYTFk
MGRlN2FlMzgzMTE3OWUzMy4uMTRkM2Q2YzIwZDljOWNkODRjMjU1ZDNmZDZkYjk3ZTFlZjBhMjJi
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0
cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25z
dHJ1Y3Rvci5qcwpAQCAtNjYsMjYgKzY2LDMgQEAgZnVuY3Rpb24gZW50cmllcyhvYmplY3QpCiAg
ICAgCiAgICAgcmV0dXJuIEBlbnVtZXJhYmxlT3duUHJvcGVydGllcyhvYmplY3QsIEBpdGVyYXRp
b25LaW5kS2V5VmFsdWUpOwogfQotCi1mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LypbKi8sIC8qLi4u
Ki9zb3VyY2VzLypdICovKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh0YXJnZXQg
PT0gbnVsbCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJPYmplY3QuYXNzaWduIHJlcXVpcmVz
IHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAg
bGV0IG9ialRhcmdldCA9IEBPYmplY3QodGFyZ2V0KTsKLSAgICBmb3IgKGxldCBzID0gMSwgYXJn
dW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgcyA8IGFyZ3VtZW50c0xlbmd0aDsgKytz
KSB7Ci0gICAgICAgIGxldCBuZXh0U291cmNlID0gYXJndW1lbnRzW3NdOwotICAgICAgICBpZiAo
bmV4dFNvdXJjZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBsZXQgZnJvbSA9IEBPYmplY3QobmV4
dFNvdXJjZSk7Ci0gICAgICAgICAgICBsZXQga2V5cyA9IEBSZWZsZWN0LkBvd25LZXlzKGZyb20p
OwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGtleXNMZW5ndGggPSBrZXlzLmxlbmd0aDsg
aSA8IGtleXNMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGxldCBuZXh0S2V5ID0ga2V5
c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoQHByb3BlcnR5SXNFbnVtZXJhYmxlKGZyb20sIG5l
eHRLZXkpKQotICAgICAgICAgICAgICAgICAgICBvYmpUYXJnZXRbbmV4dEtleV0gPSBmcm9tW25l
eHRLZXldOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBvYmpU
YXJnZXQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggODAzYjkwOTY3YzIxYTNjMjAxZGRhMjNiMDNjMjU5NTM5MmUw
YjZlMy4uOWNiODc0NjE2NjU0N2E1MzU5NTI3NTJmZDFmMWI4Yjc3ZWY1NTIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVj
U3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JT
ZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSopOwpAQCAtODIs
NyArODMsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBpc0Zyb3plbiAgICAgICAgICAg
ICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4gICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQogICBpc0V4dGVuc2libGUgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVj
dG9ySXNFeHRlbnNpYmxlICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBpcyAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXMgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICBhc3NpZ24gICAgICAgICAgICAgICAgICAg
IEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorICBhc3NpZ24gICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yQXNz
aWduICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICB2YWx1ZXMgICAg
ICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQogICBlbnRyaWVzICAgICAgICAgICAgICAgICAgIEpTQnVp
bHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQogQGVuZApAQCAtMzA1LDYgKzMwNiw3NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG93bkVudW1lcmFibGVQcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUp
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFz
c2lnbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRhcmdl
dFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKHRhcmdldFZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIk9iamVjdC5hc3NpZ24gcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0
ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIikpOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0
YXJnZXRWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYXJnc0NvdW50OyAr
K2kpIHsKKyAgICAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpOworICAgICAgICBpZiAoc291cmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBKU09iamVjdCogc291cmNlID0gc291cmNlVmFs
dWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMo
ZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpOworICAgICAgICBzb3Vy
Y2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UsIGV4ZWMsIHBy
b3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRl
KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworCisgICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGF2b2lkIHRoaXMgZW51bWVyYWJsZSBs
b29rIHVwIGJ5IGNoZWNraW5nIFN0cnVjdHVyZSdzIHN0YXR1cy4KKyAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0MTYKKyAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAgICAgICAgIGlmICghc291cmNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5U2xvdChzb3VyY2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHNsb3QuYXR0cmli
dXRlcygpICYgRG9udEVudW0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gc291cmNlLT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBwdXRQcm9wZXJ0eVNsb3QodGFyZ2V0LCB0cnVlKTsKKyAgICAgICAg
ICAgIHRhcmdldC0+cHV0SW5saW5lKHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
cHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gRmlyc3QgbG9vcCBpcyBmb3Igc3Ry
aW5ncy4gU2Vjb25kIGxvb3AgaXMgZm9yIHN5bWJvbHMgdG8ga2VlcCBzdGFuZGFyZGl6ZWQgb3Jk
ZXIgcmVxdWlyZW1lbnQgaW4gdGhlIHNwZWMuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5b3ducHJvcGVydHlrZXlzCisgICAgICAgIGJvb2wg
Zm91bmRTeW1ib2wgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9IHBy
b3BlcnRpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJv
cGVydGllczsgaisrKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWUgPSBw
cm9wZXJ0aWVzW2pdOworICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7
CisgICAgICAgICAgICAgICAgZm91bmRTeW1ib2wgPSB0cnVlOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NpZ24ocHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgIXZtLnByb3BlcnR5TmFt
ZXMtPmlzUHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBh
c3NpZ24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFy
Z2V0KTsKK30KKwogLy8gRVM2IDYuMi40LjUgVG9Qcm9wZXJ0eURlc2NyaXB0b3IKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlkZXNjcmlwdG9yCiBib29s
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA5N2I4NjY5MmY4NTc4ZjNlMzIyMjY0ZDk1NzUzOTE2OTM0OTRk
NTFhLi4zNWFkNTZkMzM2YWUzNzc2OTZiOTQ0YmRjYTVmYzExN2M3Nzc5MTA0IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTA2LTE1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NdIEltcGxlbWVudCBPYmplY3QuYXNzaWduIGluIEMrKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWFz
c2lnbi1zdHJpbmctZmlyc3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoc291cmNlLmdldCBTeW1ib2wpOgorICAgICAgICAoc291cmNlLmdldCAxKToKKyAgICAgICAg
KHNvdXJjZS5nZXQgY29jb2EpOgorCiAyMDE3LTA2LTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogcmVtb3ZlIGVtcHR5IHRlc3QgZmls
ZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24tc3RyaW5nLWZpcnN0
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1zdHJpbmctZmlyc3QuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTVjMjQ4OWYyMjdmMmIzZjljM2E2NDEzZmJlNDc4OGExMTI2Zjk5YgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24tc3RyaW5nLWZpcnN0LmpzCkBA
IC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb3JkZXIgPSBbXTsKKwordmFyIHNvdXJjZSA9
IHsKKyAgICBnZXQgW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgIHsKKyAgICAgICAgb3JkZXIucHVz
aChgU3ltYm9sLml0ZXJhdG9yYCk7CisgICAgICAgIHJldHVybiBgU3ltYm9sLml0ZXJhdG9yYDsK
KyAgICB9LAorCisgICAgZ2V0IDEoKQorICAgIHsKKyAgICAgICAgb3JkZXIucHVzaChgMWApOwor
ICAgICAgICByZXR1cm4gYDFgOworICAgIH0sCisKKyAgICBnZXQgY29jb2EoKQorICAgIHsKKyAg
ICAgICAgb3JkZXIucHVzaChgY29jb2FgKTsKKyAgICAgICAgcmV0dXJuIGBjb2NvYWA7CisgICAg
fSwKK307CisKK3ZhciByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBzb3VyY2UpOworc2hvdWxk
QmUocmVzdWx0WzFdLCBgMWApOworc2hvdWxkQmUocmVzdWx0LmNvY29hLCBgY29jb2FgKTsKK3No
b3VsZEJlKHJlc3VsdFtTeW1ib2wuaXRlcmF0b3JdLCBgU3ltYm9sLml0ZXJhdG9yYCk7CitzaG91
bGRCZShvcmRlci5qb2luKCcsJyksIGAxLGNvY29hLFN5bWJvbC5pdGVyYXRvcmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312978</attachid>
            <date>2017-06-15 07:01:12 -0700</date>
            <delta_ts>2017-06-15 07:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173414-20170615230111.patch</filename>
            <type>text/plain</type>
            <size>14038</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjBhNjhmY2E4MWU1OWFiN2M1MDU1ZmVlYmQ5MjZiYTJhYjMxYTUyLi42ZDAzNWQwODkwNmE5YzI5
MjU3Zjc4YmNhZmFjZGE4Y2E1YmI5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2lnbiBpbiBDKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBPYmplY3QuYXNzaWduIGluIEpTIGlzIG5vdCBzbyBnb29kIGNvbXBhcmVkIHRvIEMrKyB2ZXJz
aW9uIGJlY2F1c2UsCisKKyAgICAgICAgMS4gSlMgdmVyc2lvbiBhbGxvY2F0ZXMgSlMgYXJyYXkg
Zm9yIG9iamVjdCBvd24ga2V5cy4gQW5kIHdlIGFsbG9jYXRlIEpTU3RyaW5nIC8gU3ltYm9sIGZv
ciBlYWNoIGtleS4KKyAgICAgICAgQnV0IGJhc2ljYWxseSwgdGhleSBjYW4gYmUgaGFuZGxlZCBh
cyBVbmlxdWVkU3RyaW5nSW1wbCBpbiBDKysuIEFsbG9jYXRpbmcgdGhlc2UgY2VsbHMgYXJlIHdh
c3RlZnVsLgorCisgICAgICAgIDIuIFdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucyBpbiBKUyBv
ZmZlcnMgc29tZSBnb29kIHR5cGUgc3BlY3VsYXRpb24gY2hhbmNlcywgT2JqZWN0LmFzc2lnbiBp
cyBpbmhlcmVudGx5IHN1cGVyIHBvbHltb3JwaGljLgorICAgICAgICBTbyBKUydzIHR5cGUgcHJv
ZmlsZSBkb2Vzbid0IGhlbHAgd2VsbC4KKworICAgICAgICAzLiBXZSBoYXZlIGEgY2hhbmNlIHRv
IGludHJvZHVjZSB2YXJpb3VzIGZhc3QgcGF0aCBmb3IgT2JqZWN0LmFzc2lnbiBpbiBDKysuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBpbXBsZW1lbnRhdGlvbiBmcm9tIEpTIHRvIEMrKy4g
SXQgYWNoaWV2ZXMgdGhlIGFib3ZlICgxKSBhbmQgKDIpLiAoMykgaXMgZmlsZWQgaW4gWzFdLgor
CisgICAgICAgIFdlIGNhbiBzZWUgMS42NXggaW1wcm92ZW1lbnQgaW4gU2l4U3BlZWQgb2JqZWN0
LWFzc2lnbi5lczYuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vs
aW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAorCisgICAgICAgIG9iamVjdC1hc3NpZ24uZXM2
ICAgICAgNjQzLjMyNTMrLTguMDUyMSAgICAgXiAgICAzODkuMTA3NSstOC44ODQwICAgICAgICBe
IGRlZmluaXRlbHkgMS42NTMzeCBmYXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0MTYKKworICAgICAgICAqIGJ1aWx0aW5zL09i
amVjdENvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZW50cmllcyk6CisgICAgICAgIChhc3NpZ24p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckFzc2lnbik6CisKKyAgICAgICAgKiBidWlsdGlu
cy9PYmplY3RDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMpOgorICAgICAgICAoYXNz
aWduKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dElubGluZSk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lRm9ySlNPYmplY3QpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24pOgorCiAyMDE3
LTA2LTE0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBPYmplY3RpdmUtQyBjbGFzcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUg
Y2Fu4oCZdCBiZSBleHBvcnRlZCB0byBKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKaW5kZXggMjYzYjJmYzBlYjU4
MTZjMzc5N2NjYTFkMGRlN2FlMzgzMTE3OWUzMy4uMTRkM2Q2YzIwZDljOWNkODRjMjU1ZDNmZDZk
Yjk3ZTFlZjBhMjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L09iamVjdENvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9PYmplY3RDb25zdHJ1Y3Rvci5qcwpAQCAtNjYsMjYgKzY2LDMgQEAgZnVuY3Rpb24gZW50cmll
cyhvYmplY3QpCiAgICAgCiAgICAgcmV0dXJuIEBlbnVtZXJhYmxlT3duUHJvcGVydGllcyhvYmpl
Y3QsIEBpdGVyYXRpb25LaW5kS2V5VmFsdWUpOwogfQotCi1mdW5jdGlvbiBhc3NpZ24odGFyZ2V0
LypbKi8sIC8qLi4uKi9zb3VyY2VzLypdICovKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAg
IGlmICh0YXJnZXQgPT0gbnVsbCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJPYmplY3QuYXNz
aWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOwotCi0gICAgbGV0IG9ialRhcmdldCA9IEBPYmplY3QodGFyZ2V0KTsKLSAgICBmb3IgKGxl
dCBzID0gMSwgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgcyA8IGFyZ3VtZW50
c0xlbmd0aDsgKytzKSB7Ci0gICAgICAgIGxldCBuZXh0U291cmNlID0gYXJndW1lbnRzW3NdOwot
ICAgICAgICBpZiAobmV4dFNvdXJjZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBsZXQgZnJvbSA9
IEBPYmplY3QobmV4dFNvdXJjZSk7Ci0gICAgICAgICAgICBsZXQga2V5cyA9IEBSZWZsZWN0LkBv
d25LZXlzKGZyb20pOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGtleXNMZW5ndGggPSBr
ZXlzLmxlbmd0aDsgaSA8IGtleXNMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGxldCBu
ZXh0S2V5ID0ga2V5c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoQHByb3BlcnR5SXNFbnVtZXJh
YmxlKGZyb20sIG5leHRLZXkpKQotICAgICAgICAgICAgICAgICAgICBvYmpUYXJnZXRbbmV4dEtl
eV0gPSBmcm9tW25leHRLZXldOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBvYmpUYXJnZXQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YmNiOTk1YjQ5ZjJmZDcxMGRiMzlmYmQ4MTQ2
MGFiNWRiMzAwNDZlLi41ZjVhMWZkYjNkYTU1NjdkY2JjZmYyN2NjZDAxYjlhYmQ4MjA2YTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTg4MCw3ICs4ODAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgIEpTQ2Vs
bCogY2VsbCA9IGFzQ2VsbCgpOwogICAgIGF1dG8gcHV0TWV0aG9kID0gY2VsbC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPnB1dDsKICAgICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBKU09iamVj
dDo6cHV0KSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRJbmxpbmUoY2VsbCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0
SW5saW5lRm9ySlNPYmplY3QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgb3RoZXJTbG90ID0gc2xvdDsKICAgICBib29sIHJlc3Vs
dCA9IHB1dE1ldGhvZChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBvdGhlclNsb3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGI3MWJk
NGU2NzJjYzljYjYxMzRjMjBlYWVlYTVlODAxMGUwODlhNGQuLjFkMTI2ODhlZDljNjY2MTAzMGM3
MjViYWIzM2ZkNjliYmUwZGM5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBib29sIG9yZGluYXJ5U2V0U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbQog
Ly8gRUNNQSA4LjYuMi4yCiBib29sIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gcHV0SW5saW5lKGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVj
dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogYm9vbCBKU09i
amVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGY0NjE1YmY2M2ViOWIzYjdmM2EyOGI1
MmQyMTMwMDdlMWFmOGFmMjQuLjNmYzEwZDE4ZjQ1ZjcyODNjZjdkOGI0NjQ2ZjNhOWExMDE5NDRi
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTkwLDcg
KzE5MCw4IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBtX2J1dHRlcmZseS5nZXQoKS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgfQogICAgIAotICAgIHN0
YXRpYyBib29sIHB1dElubGluZShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIHB1dElubGluZUZvckpT
T2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgYm9vbCBwdXRJbmxpbmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAvLyBwdXRCeUluZGV4IGFzc3VtZXMgdGhhdCB0
aGUgcmVjZWl2ZXIgaXMgdGhpcyBKU0NlbGwgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCBkNWIzMDgwYzUyMzlmZWYxODYz
YTVhZThmOWI3YzA1MWZhMWFlZDg0Li43ZmE4ZTNiYTgxNGVlYjdmYmFjMGJlMjY1MWM1MjliYmRh
ZGZmMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaApAQCAtMTk0LDcgKzE5NCw3IEBAIEFMV0FZU19JTkxJTkUgUHJvcGVydHlPZmZzZXQg
SlNPYmplY3Q6OnByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2CiB9CiAK
IC8vIEVDTUEgOC42LjIuMgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6cHV0SW5saW5lRm9ySlNPYmplY3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIyMSw2ICsyMjEsMTQgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmEKICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0SW5saW5lU2xvdyhl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAorQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpwdXRJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0
byBwdXRNZXRob2QgPSBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0OworICAgIGlmIChMSUtF
TFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OnB1dElubGluZUZvckpTT2JqZWN0KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIHJldHVybiBwdXRNZXRob2QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7Cit9CisKIC8vIEhhc093blByb3BlcnR5KE8sIFApIGZyb20gc2VjdGlvbiA3LjMu
MTEgaW4gdGhlIHNwZWMuCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wL2luZGV4Lmh0bWwjc2VjLWhhc293bnByb3BlcnR5CiBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6Omhhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDgwM2I5
MDk2N2MyMWEzYzIwMWRkYTIzYjAzYzI1OTUzOTJlMGI2ZTMuLjkyZmU1OWE3MDg4ODM2ZDc2OGRi
MWIyYWRkNDk3OTRiZGU4MGViM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JBc3NpZ24oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKQEAgLTgyLDcgKzgzLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0
aW9uOjpzX2kKICAgaXNGcm96ZW4gICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rvcklz
RnJvemVuICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXNFeHRlbnNp
YmxlICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRXh0ZW5zaWJsZSAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXMgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3RDb25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKLSAgYXNzaWduICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgYXNzaWduICAgICAgICAg
ICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
ZW50cmllcyAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKQEAgLTMwNSw2ICszMDYsNzQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvd25FbnVtZXJhYmxlUHJvcGVydHlLZXlz
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5
S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJPYmplY3QuYXNz
aWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICB1bnNpZ25lZCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGFyZ3NDb3VudDsgKytpKSB7CisgICAgICAgIEpTVmFsdWUgc291
cmNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgaWYgKHNvdXJj
ZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgSlNPYmplY3QqIHNvdXJjZSA9IHNvdXJjZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzKTsKKyAgICAgICAgc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5TmFtZXMoc291cmNlLCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGFzc2lnbiA9
IFsmXSAoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFdlIGNhbiBhdm9pZCB0aGlzIGVudW1lcmFibGUgbG9vayB1cCBieSBjaGVja2luZyBTdHJ1Y3R1
cmUncyBzdGF0dXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczNDE2CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzb3VyY2Us
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAg
ICAgICAgICBpZiAoIXNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
c291cmNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNvdXJjZS0+
Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworCisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVy
dHlTbG90KHRhcmdldCwgdHJ1ZSk7CisgICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgfTsKKworICAgICAgICAv
LyBGaXJzdCBsb29wIGlzIGZvciBzdHJpbmdzLiBTZWNvbmQgbG9vcCBpcyBmb3Igc3ltYm9scyB0
byBrZWVwIHN0YW5kYXJkaXplZCBvcmRlciByZXF1aXJlbWVudCBpbiB0aGUgc3BlYy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlvd25wcm9w
ZXJ0eWtleXMKKyAgICAgICAgYm9vbCBmb3VuZFN5bWJvbCA9IGZhbHNlOworICAgICAgICB1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaiA9IDA7IGogPCBudW1Qcm9wZXJ0aWVzOyBqKyspIHsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8mIHByb3BlcnR5TmFtZSA9IHByb3BlcnRpZXNbal07CisgICAgICAgICAgICBpZiAocHJv
cGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZFN5bWJvbCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGFzc2lnbihwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm91
bmRTeW1ib2wpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Qcm9w
ZXJ0aWVzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0aWVzW2pdOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSAmJiAhdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShwcm9wZXJ0eU5hbWUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2lnbihwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQpOworfQorCiAvLyBFUzYgNi4yLjQuNSBUb1Byb3Bl
cnR5RGVzY3JpcHRvcgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9w
cm9wZXJ0eWRlc2NyaXB0b3IKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2MpCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk3Yjg2NjkyZjg1Nzhm
M2UzMjIyNjRkOTU3NTM5MTY5MzQ5NGQ1MWEuLjM1YWQ1NmQzMzZhZTM3NzY5NmI5NDRiZGNhNWZj
MTE3Yzc3NzkxMDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDYtMTUgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IE9iamVjdC5h
c3NpZ24gaW4gQysrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzM0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy9vYmplY3QtYXNzaWduLXN0cmluZy1maXJzdC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzb3VyY2UuZ2V0IFN5bWJvbCk6CisgICAgICAgIChz
b3VyY2UuZ2V0IDEpOgorICAgICAgICAoc291cmNlLmdldCBjb2NvYSk6CisKIDIwMTctMDYtMTQg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5
OiByZW1vdmUgZW1wdHkgdGVzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWFzc2lnbi1zdHJpbmctZmlyc3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNzaWdu
LXN0cmluZy1maXJzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMyNDg5ZjIyN2YyYjNmOWMzYTY0MTNmYmU0
Nzg4YTExMjZmOTliCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFz
c2lnbi1zdHJpbmctZmlyc3QuanMKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBvcmRl
ciA9IFtdOworCit2YXIgc291cmNlID0geworICAgIGdldCBbU3ltYm9sLml0ZXJhdG9yXSgpCisg
ICAgeworICAgICAgICBvcmRlci5wdXNoKGBTeW1ib2wuaXRlcmF0b3JgKTsKKyAgICAgICAgcmV0
dXJuIGBTeW1ib2wuaXRlcmF0b3JgOworICAgIH0sCisKKyAgICBnZXQgMSgpCisgICAgeworICAg
ICAgICBvcmRlci5wdXNoKGAxYCk7CisgICAgICAgIHJldHVybiBgMWA7CisgICAgfSwKKworICAg
IGdldCBjb2NvYSgpCisgICAgeworICAgICAgICBvcmRlci5wdXNoKGBjb2NvYWApOworICAgICAg
ICByZXR1cm4gYGNvY29hYDsKKyAgICB9LAorfTsKKwordmFyIHJlc3VsdCA9IE9iamVjdC5hc3Np
Z24oe30sIHNvdXJjZSk7CitzaG91bGRCZShyZXN1bHRbMV0sIGAxYCk7CitzaG91bGRCZShyZXN1
bHQuY29jb2EsIGBjb2NvYWApOworc2hvdWxkQmUocmVzdWx0W1N5bWJvbC5pdGVyYXRvcl0sIGBT
eW1ib2wuaXRlcmF0b3JgKTsKK3Nob3VsZEJlKG9yZGVyLmpvaW4oJywnKSwgYDEsY29jb2EsU3lt
Ym9sLml0ZXJhdG9yYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312979</attachid>
            <date>2017-06-15 07:01:53 -0700</date>
            <delta_ts>2017-06-15 12:10:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173414-20170615230151.patch</filename>
            <type>text/plain</type>
            <size>13863</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjBhNjhmY2E4MWU1OWFiN2M1MDU1ZmVlYmQ5MjZiYTJhYjMxYTUyLi41ZjE1YjJkMmEwYTU0YWFi
N2ExODg1ODdmMjdhNjg3NzQyN2JjNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2lnbiBpbiBDKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBPYmplY3QuYXNzaWduIGluIEpTIGlzIG5vdCBzbyBnb29kIGNvbXBhcmVkIHRvIEMrKyB2ZXJz
aW9uIGJlY2F1c2UsCisKKyAgICAgICAgMS4gSlMgdmVyc2lvbiBhbGxvY2F0ZXMgSlMgYXJyYXkg
Zm9yIG9iamVjdCBvd24ga2V5cy4gQW5kIHdlIGFsbG9jYXRlIEpTU3RyaW5nIC8gU3ltYm9sIGZv
ciBlYWNoIGtleS4KKyAgICAgICAgQnV0IGJhc2ljYWxseSwgdGhleSBjYW4gYmUgaGFuZGxlZCBh
cyBVbmlxdWVkU3RyaW5nSW1wbCBpbiBDKysuIEFsbG9jYXRpbmcgdGhlc2UgY2VsbHMgYXJlIHdh
c3RlZnVsLgorCisgICAgICAgIDIuIFdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucyBpbiBKUyBv
ZmZlcnMgc29tZSBnb29kIHR5cGUgc3BlY3VsYXRpb24gY2hhbmNlcywgT2JqZWN0LmFzc2lnbiBp
cyBpbmhlcmVudGx5IHN1cGVyIHBvbHltb3JwaGljLgorICAgICAgICBTbyBKUydzIHR5cGUgcHJv
ZmlsZSBkb2Vzbid0IGhlbHAgd2VsbC4KKworICAgICAgICAzLiBXZSBoYXZlIGEgY2hhbmNlIHRv
IGludHJvZHVjZSB2YXJpb3VzIGZhc3QgcGF0aCBmb3IgT2JqZWN0LmFzc2lnbiBpbiBDKysuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBpbXBsZW1lbnRhdGlvbiBmcm9tIEpTIHRvIEMrKy4g
SXQgYWNoaWV2ZXMgdGhlIGFib3ZlICgxKSBhbmQgKDIpLiAoMykgaXMgZmlsZWQgaW4gWzFdLgor
CisgICAgICAgIFdlIGNhbiBzZWUgMS42NXggaW1wcm92ZW1lbnQgaW4gU2l4U3BlZWQgb2JqZWN0
LWFzc2lnbi5lczYuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vs
aW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAorCisgICAgICAgIG9iamVjdC1hc3NpZ24uZXM2
ICAgICAgNjQzLjMyNTMrLTguMDUyMSAgICAgXiAgICAzODkuMTA3NSstOC44ODQwICAgICAgICBe
IGRlZmluaXRlbHkgMS42NTMzeCBmYXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0MTYKKworICAgICAgICAqIGJ1aWx0aW5zL09i
amVjdENvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZW50cmllcyk6CisgICAgICAgIChhc3NpZ24p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHV0SW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckFzc2lnbik6CisKIDIwMTctMDYt
MTQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIE9i
amVjdGl2ZS1DIGNsYXNzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYW4gdW5kZXJzY29yZSBjYW7i
gJl0IGJlIGV4cG9ydGVkIHRvIEphdmFTY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwppbmRleCAyNjNiMmZjMGViNTgxNmMz
Nzk3Y2NhMWQwZGU3YWUzODMxMTc5ZTMzLi4xNGQzZDZjMjBkOWM5Y2Q4NGMyNTVkM2ZkNmRiOTdl
MWVmMGEyMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2Jq
ZWN0Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09i
amVjdENvbnN0cnVjdG9yLmpzCkBAIC02NiwyNiArNjYsMyBAQCBmdW5jdGlvbiBlbnRyaWVzKG9i
amVjdCkKICAgICAKICAgICByZXR1cm4gQGVudW1lcmFibGVPd25Qcm9wZXJ0aWVzKG9iamVjdCwg
QGl0ZXJhdGlvbktpbmRLZXlWYWx1ZSk7CiB9Ci0KLWZ1bmN0aW9uIGFzc2lnbih0YXJnZXQvKlsq
LywgLyouLi4qL3NvdXJjZXMvKl0gKi8pCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYg
KHRhcmdldCA9PSBudWxsKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24g
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7
Ci0KLSAgICBsZXQgb2JqVGFyZ2V0ID0gQE9iamVjdCh0YXJnZXQpOwotICAgIGZvciAobGV0IHMg
PSAxLCBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBzIDwgYXJndW1lbnRzTGVu
Z3RoOyArK3MpIHsKLSAgICAgICAgbGV0IG5leHRTb3VyY2UgPSBhcmd1bWVudHNbc107Ci0gICAg
ICAgIGlmIChuZXh0U291cmNlICE9IG51bGwpIHsKLSAgICAgICAgICAgIGxldCBmcm9tID0gQE9i
amVjdChuZXh0U291cmNlKTsKLSAgICAgICAgICAgIGxldCBrZXlzID0gQFJlZmxlY3QuQG93bktl
eXMoZnJvbSk7Ci0gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwga2V5c0xlbmd0aCA9IGtleXMu
bGVuZ3RoOyBpIDwga2V5c0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IG5leHRL
ZXkgPSBrZXlzW2ldOwotICAgICAgICAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFibGUo
ZnJvbSwgbmV4dEtleSkpCi0gICAgICAgICAgICAgICAgICAgIG9ialRhcmdldFtuZXh0S2V5XSA9
IGZyb21bbmV4dEtleV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuIG9ialRhcmdldDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDViY2I5OTViNDlmMmZkNzEwZGIzOWZiZDgxNDYwYWI1
ZGIzMDA0NmUuLjVmNWExZmRiM2RhNTU2N2RjYmNmZjI3Y2NkMDFiOWFiZDgyMDZhODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtODgwLDcgKzg4MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpwdXRJbmxpbmUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgSlNDZWxsKiBj
ZWxsID0gYXNDZWxsKCk7CiAgICAgYXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0OwogICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0Ojpw
dXQpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRJbmxp
bmVGb3JKU09iamVjdChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIAog
ICAgIFB1dFByb3BlcnR5U2xvdCBvdGhlclNsb3QgPSBzbG90OwogICAgIGJvb2wgcmVzdWx0ID0g
cHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90aGVyU2xvdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYjcxYmQ0ZTY3
MmNjOWNiNjEzNGMyMGVhZWVhNWU4MDEwZTA4OWE0ZC4uMWQxMjY4OGVkOWM2NjYxMDMwYzcyNWJh
YjMzZmQ2OWJiZTBkYzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtNzQ4LDcgKzc0OCw3IEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtCiAvLyBF
Q01BIDguNi4yLjIKIGJvb2wgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBwdXRJbmxpbmUoY2VsbCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHB1dElubGluZUZvckpTT2JqZWN0KGNl
bGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBib29sIEpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZjQ2MTViZjYzZWI5YjNiN2YzYTI4YjUyZDIx
MzAwN2UxYWY4YWYyNC4uM2ZjMTBkMThmNDVmNzI4M2NmN2Q4YjQ2NDZmM2E5YTEwMTk0NGI2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xOTAsNyArMTkw
LDggQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1f
YnV0dGVyZmx5LmdldCgpLT52ZWN0b3JMZW5ndGgoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IGJvb2wgcHV0SW5saW5lKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0SW5saW5lRm9ySlNPYmpl
Y3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBib29sIHB1dElubGluZShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIC8vIHB1dEJ5SW5kZXggYXNzdW1lcyB0aGF0IHRoZSBy
ZWNlaXZlciBpcyB0aGlzIEpTQ2VsbCBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGQ1YjMwODBjNTIzOWZlZjE4NjNhNWFl
OGY5YjdjMDUxZmExYWVkODQuLjdmYThlM2JhODE0ZWViN2ZiYWMwYmUyNjUxYzUyOWJiZGFkZmYx
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCkBAIC0xOTQsNyArMTk0LDcgQEAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eU9mZnNldCBKU09i
amVjdDo6cHJlcGFyZVRvUHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mIHYKIH0KIAogLy8g
RUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjIxLDYgKzIyMSwxNCBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OnB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvIHB1
dE1ldGhvZCA9IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQ7CisgICAgaWYgKExJS0VMWShw
dXRNZXRob2QgPT0gSlNPYmplY3Q6OnB1dCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0
SW5saW5lRm9ySlNPYmplY3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgcmV0dXJuIHB1dE1ldGhvZCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKK30KKwogLy8gSGFzT3duUHJvcGVydHkoTywgUCkgZnJvbSBzZWN0aW9uIDcuMy4xMSBp
biB0aGUgc3BlYy4KIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvaW5kZXguaHRtbCNzZWMtaGFzb3ducHJvcGVydHkKIEFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODAzYjkwOTY3
YzIxYTNjMjAxZGRhMjNiMDNjMjU5NTM5MmUwYjZlMy4uOTJmZTU5YTcwODg4MzZkNzY4ZGIxYjJh
ZGQ0OTc5NGJkZTgwZWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFz
c2lnbihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSopOwpAQCAtODIsNyArODMsNyBAQCBjb25zdCBDbGFzc0luZm8gT2Jq
ZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246
OnNfaQogICBpc0Zyb3plbiAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNGcm96
ZW4gICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBpc0V4dGVuc2libGUg
ICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICBpcyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENv
bnN0cnVjdG9ySXMgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgot
ICBhc3NpZ24gICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBhc3NpZ24gICAgICAgICAgICAg
ICAgICAgIG9iamVjdENvbnN0cnVjdG9yQXNzaWduICAgICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgogICB2YWx1ZXMgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBlbnRy
aWVzICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZApAQCAtMzA1LDYgKzMwNiw3NCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG93bkVudW1lcmFibGVQcm9wZXJ0eUtleXMoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlz
KGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Cisg
ICAgaWYgKHRhcmdldFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5hc3NpZ24g
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIikp
OworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChleGVjKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIHVu
c2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgYXJnc0NvdW50OyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSBzb3VyY2VW
YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOworICAgICAgICBpZiAoc291cmNlVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBK
U09iamVjdCogc291cmNlID0gc291cmNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5n
c0FuZFN5bWJvbHMpOworICAgICAgICBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhzb3VyY2UsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGF1dG8gYXNzaWduID0gWyZd
IChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
Y2FuIGF2b2lkIHRoaXMgZW51bWVyYWJsZSBsb29rIHVwIGJ5IGNoZWNraW5nIFN0cnVjdHVyZSdz
IHN0YXR1cy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzM0MTYKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICAgICAg
ICAgIGlmICghc291cmNlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdChzb3Vy
Y2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgRG9udEVudW0pCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc291cmNlLT5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBwdXRQcm9wZXJ0eVNs
b3QodGFyZ2V0LCB0cnVlKTsKKyAgICAgICAgICAgIHRhcmdldC0+cHV0SW5saW5lKGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICB9OworCisgICAgICAgIC8vIEZp
cnN0IGxvb3AgaXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1ib2xzIHRvIGtl
ZXAgc3RhbmRhcmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgorICAgICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93bnByb3BlcnR5
a2V5cworICAgICAgICBib29sIGZvdW5kU3ltYm9sID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVk
IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG51bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgYXV0
byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgICAgIGZvdW5kU3ltYm9sID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
YXNzaWduKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3VuZFN5
bWJvbCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51bVByb3BlcnRp
ZXM7IGorKykgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZSA9IHBy
b3BlcnRpZXNbal07CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
ICYmICF2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKHByb3BlcnR5TmFtZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXNzaWduKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRhcmdldCk7Cit9CisKIC8vIEVTNiA2LjIuNC41IFRvUHJvcGVydHlE
ZXNjcmlwdG9yCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3Byb3Bl
cnR5ZGVzY3JpcHRvcgogYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTdiODY2OTJmODU3OGYzZTMy
MjI2NGQ5NTc1MzkxNjkzNDk0ZDUxYS4uMzVhZDU2ZDMzNmFlMzc3Njk2Yjk0NGJkY2E1ZmMxMTdj
Nzc3OTEwNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2ln
biBpbiBDKysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL29iamVjdC1hc3NpZ24tc3RyaW5nLWZpcnN0LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHNvdXJjZS5nZXQgU3ltYm9sKToKKyAgICAgICAgKHNvdXJj
ZS5nZXQgMSk6CisgICAgICAgIChzb3VyY2UuZ2V0IGNvY29hKToKKwogMjAxNy0wNi0xNCAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IHJl
bW92ZSBlbXB0eSB0ZXN0IGZpbGVzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qt
YXNzaWduLXN0cmluZy1maXJzdC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24tc3Ry
aW5nLWZpcnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YzI0ODlmMjI3ZjJiM2Y5YzNhNjQxM2ZiZTQ3ODhh
MTEyNmY5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNzaWdu
LXN0cmluZy1maXJzdC5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9yZGVyID0g
W107CisKK3ZhciBzb3VyY2UgPSB7CisgICAgZ2V0IFtTeW1ib2wuaXRlcmF0b3JdKCkKKyAgICB7
CisgICAgICAgIG9yZGVyLnB1c2goYFN5bWJvbC5pdGVyYXRvcmApOworICAgICAgICByZXR1cm4g
YFN5bWJvbC5pdGVyYXRvcmA7CisgICAgfSwKKworICAgIGdldCAxKCkKKyAgICB7CisgICAgICAg
IG9yZGVyLnB1c2goYDFgKTsKKyAgICAgICAgcmV0dXJuIGAxYDsKKyAgICB9LAorCisgICAgZ2V0
IGNvY29hKCkKKyAgICB7CisgICAgICAgIG9yZGVyLnB1c2goYGNvY29hYCk7CisgICAgICAgIHJl
dHVybiBgY29jb2FgOworICAgIH0sCit9OworCit2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7
fSwgc291cmNlKTsKK3Nob3VsZEJlKHJlc3VsdFsxXSwgYDFgKTsKK3Nob3VsZEJlKHJlc3VsdC5j
b2NvYSwgYGNvY29hYCk7CitzaG91bGRCZShyZXN1bHRbU3ltYm9sLml0ZXJhdG9yXSwgYFN5bWJv
bC5pdGVyYXRvcmApOworc2hvdWxkQmUob3JkZXIuam9pbignLCcpLCBgMSxjb2NvYSxTeW1ib2wu
aXRlcmF0b3JgKTsK
</data>
<flag name="review"
          id="333882"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312996</attachid>
            <date>2017-06-15 12:27:07 -0700</date>
            <delta_ts>2017-06-15 12:27:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173414-20170616042706.patch</filename>
            <type>text/plain</type>
            <size>14968</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjBhNjhmY2E4MWU1OWFiN2M1MDU1ZmVlYmQ5MjZiYTJhYjMxYTUyLi4wYTExMjY4YTc4MTZkMzk3
MGMxZTY0NDNmNGYxYjhlN2VjY2RhYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNy0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgT2JqZWN0LmFzc2lnbiBpbiBDKysKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzQxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBPYmplY3QuYXNzaWduIGluIEpTIGlzIG5vdCBzbyBnb29kIGNvbXBhcmVkIHRvIEMrKyB2ZXJz
aW9uIGJlY2F1c2UsCisKKyAgICAgICAgMS4gSlMgdmVyc2lvbiBhbGxvY2F0ZXMgSlMgYXJyYXkg
Zm9yIG9iamVjdCBvd24ga2V5cy4gQW5kIHdlIGFsbG9jYXRlIEpTU3RyaW5nIC8gU3ltYm9sIGZv
ciBlYWNoIGtleS4KKyAgICAgICAgQnV0IGJhc2ljYWxseSwgdGhleSBjYW4gYmUgaGFuZGxlZCBh
cyBVbmlxdWVkU3RyaW5nSW1wbCBpbiBDKysuIEFsbG9jYXRpbmcgdGhlc2UgY2VsbHMgYXJlIHdh
c3RlZnVsLgorCisgICAgICAgIDIuIFdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucyBpbiBKUyBv
ZmZlcnMgc29tZSBnb29kIHR5cGUgc3BlY3VsYXRpb24gY2hhbmNlcywgT2JqZWN0LmFzc2lnbiBp
cyBpbmhlcmVudGx5IHN1cGVyIHBvbHltb3JwaGljLgorICAgICAgICBTbyBKUydzIHR5cGUgcHJv
ZmlsZSBkb2Vzbid0IGhlbHAgd2VsbC4KKworICAgICAgICAzLiBXZSBoYXZlIGEgY2hhbmNlIHRv
IGludHJvZHVjZSB2YXJpb3VzIGZhc3QgcGF0aCBmb3IgT2JqZWN0LmFzc2lnbiBpbiBDKysuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBpbXBsZW1lbnRhdGlvbiBmcm9tIEpTIHRvIEMrKy4g
SXQgYWNoaWV2ZXMgdGhlIGFib3ZlICgxKSBhbmQgKDIpLiAoMykgaXMgZmlsZWQgaW4gWzFdLgor
CisgICAgICAgIFdlIGNhbiBzZWUgMS42NXggaW1wcm92ZW1lbnQgaW4gU2l4U3BlZWQgb2JqZWN0
LWFzc2lnbi5lczYuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vs
aW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAorCisgICAgICAgIG9iamVjdC1hc3NpZ24uZXM2
ICAgICAgNjQzLjMyNTMrLTguMDUyMSAgICAgXiAgICAzODkuMTA3NSstOC44ODQwICAgICAgICBe
IGRlZmluaXRlbHkgMS42NTMzeCBmYXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0MTYKKworICAgICAgICAqIGJ1aWx0aW5zL09i
amVjdENvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZW50cmllcyk6CisgICAgICAgIChhc3NpZ24p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHV0SW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnB1dElubGluZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0SW5saW5lRm9ySlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24pOgorCiAyMDE3LTA2LTE0ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBPYmplY3Rp
dmUtQyBjbGFzcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUgY2Fu4oCZdCBi
ZSBleHBvcnRlZCB0byBKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKaW5kZXggMjYzYjJmYzBlYjU4MTZjMzc5N2Nj
YTFkMGRlN2FlMzgzMTE3OWUzMy4uMTRkM2Q2YzIwZDljOWNkODRjMjU1ZDNmZDZkYjk3ZTFlZjBh
MjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENv
bnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RD
b25zdHJ1Y3Rvci5qcwpAQCAtNjYsMjYgKzY2LDMgQEAgZnVuY3Rpb24gZW50cmllcyhvYmplY3Qp
CiAgICAgCiAgICAgcmV0dXJuIEBlbnVtZXJhYmxlT3duUHJvcGVydGllcyhvYmplY3QsIEBpdGVy
YXRpb25LaW5kS2V5VmFsdWUpOwogfQotCi1mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LypbKi8sIC8q
Li4uKi9zb3VyY2VzLypdICovKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh0YXJn
ZXQgPT0gbnVsbCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJPYmplY3QuYXNzaWduIHJlcXVp
cmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0g
ICAgbGV0IG9ialRhcmdldCA9IEBPYmplY3QodGFyZ2V0KTsKLSAgICBmb3IgKGxldCBzID0gMSwg
YXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgcyA8IGFyZ3VtZW50c0xlbmd0aDsg
KytzKSB7Ci0gICAgICAgIGxldCBuZXh0U291cmNlID0gYXJndW1lbnRzW3NdOwotICAgICAgICBp
ZiAobmV4dFNvdXJjZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBsZXQgZnJvbSA9IEBPYmplY3Qo
bmV4dFNvdXJjZSk7Ci0gICAgICAgICAgICBsZXQga2V5cyA9IEBSZWZsZWN0LkBvd25LZXlzKGZy
b20pOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGtleXNMZW5ndGggPSBrZXlzLmxlbmd0
aDsgaSA8IGtleXNMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGxldCBuZXh0S2V5ID0g
a2V5c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoQHByb3BlcnR5SXNFbnVtZXJhYmxlKGZyb20s
IG5leHRLZXkpKQotICAgICAgICAgICAgICAgICAgICBvYmpUYXJnZXRbbmV4dEtleV0gPSBmcm9t
W25leHRLZXldOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBv
YmpUYXJnZXQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAppbmRleCA1YmNiOTk1YjQ5ZjJmZDcxMGRiMzlmYmQ4MTQ2MGFiNWRiMzAw
NDZlLi4zZWYyNmUzYTYyZTNhYWJmNTg4ODg3ZmFkNjYyNDQ0ZTM3MjI4YmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTg3
NiwxNiArODc2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnB1dElubGluZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKIHsKICAgICBpZiAoVU5MSUtF
TFkoIWlzQ2VsbCgpKSkKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotCi0gICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7Ci0g
ICAgYXV0byBwdXRNZXRob2QgPSBjZWxsLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0Owot
ICAgIGlmIChMSUtFTFkocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKQotICAgICAgICByZXR1
cm4gSlNPYmplY3Q6OnB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKLQotICAgIFB1dFByb3BlcnR5U2xvdCBvdGhlclNsb3QgPSBzbG90OwotICAgIGJvb2wg
cmVzdWx0ID0gcHV0TWV0aG9kKGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIG90aGVy
U2xvdCk7Ci0gICAgc2xvdCA9IG90aGVyU2xvdDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiBhc0NlbGwoKS0+cHV0SW5saW5lKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAyMTRiOThhNjliNzJkNjky
MTZlNzIwZmFjNjg3MzY2ZTUwZTRjNzNlLi5lNzkwNjRlMGMyZWJmYjI3YTgwNDM5ZDQ0YmI0MzZj
NTdmNzg5NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTc2
LDYgKzE3Niw3IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgY29uc3Qg
TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIGJv
b2wgcHV0SW5saW5lKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXgg
YzUyOTg1YzI1ZDY2YmI3NTU4NmRkNGZmNDBmNmQxYTAyYjI2MjQ0ZS4uMzU3MWEwODYzYzJjMjQ1
NTk3YTBlMTc2ZjEzYWIyNjYwYzQ4NDRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMzU3LDYgKzM1NywxNCBAQCBpbmxpbmUgSlNPYmpl
Y3QqIEpTQ2VsbDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIHJldHVybiB0b09iamVjdFNsb3coZXhlYywgZ2xvYmFsT2JqZWN0KTsK
IH0KIAorQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6cHV0SW5saW5lKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIGF1dG8gcHV0TWV0aG9kID0gbWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dDsKKyAgICBpZiAoTElLRUxZKHB1dE1ldGhvZCA9PSBKU09iamVjdDo6cHV0KSkKKyAg
ICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdChhc09iamVjdCh0aGlz
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcmV0dXJuIHB1dE1ldGhv
ZCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKwogaW5saW5lIGJv
b2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQogewogICAgIHJl
dHVybiBjZWxsLT50eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBiNzFiZDRlNjcyY2M5Y2I2
MTM0YzIwZWFlZWE1ZTgwMTBlMDg5YTRkLi4xZDEyNjg4ZWQ5YzY2NjEwMzBjNzI1YmFiMzNmZDY5
YmJlMGRjOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CkBAIC03NDgsNyArNzQ4LDcgQEAgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW0KIC8vIEVDTUEgOC42
LjIuMgogYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgcmV0dXJuIHB1dElubGluZShjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gcHV0SW5saW5lRm9ySlNPYmplY3QoY2VsbCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnB1dElu
bGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCBmNDYxNWJmNjNlYjliM2I3ZjNhMjhiNTJkMjEzMDA3ZTFh
ZjhhZjI0Li4zMDQzZGQxNDUwNGVlMGQwYWQ5YTNjMjdiNTlhYjkxMDAyYzlhZGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gbV9idXR0ZXJm
bHkuZ2V0KCktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBw
dXRJbmxpbmUoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXRJbmxpbmVGb3JKU09iamVjdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAg
IC8vIHB1dEJ5SW5kZXggYXNzdW1lcyB0aGF0IHRoZSByZWNlaXZlciBpcyB0aGlzIEpTQ2VsbCBv
YmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCmluZGV4IGQ1YjMwODBjNTIzOWZlZjE4NjNhNWFlOGY5YjdjMDUxZmExYWVkODQuLjFkNjBj
N2YwZDljNmI5YTMxZTZmNzQ2Mjc5NGY5NDUyYmY4ZTM0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xOTQsNyArMTk0LDcgQEAg
QUxXQVlTX0lOTElORSBQcm9wZXJ0eU9mZnNldCBKU09iamVjdDo6cHJlcGFyZVRvUHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oVk0mIHYKIH0KIAogLy8gRUNNQSA4LjYuMi4yCi1BTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09i
amVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCmluZGV4IDgwM2I5MDk2N2MyMWEzYzIwMWRkYTIzYjAzYzI1OTUzOTJlMGI2ZTMuLjU1
MTZjNTJlNTM1OWY0Y2JlOWM3Mjc3OTdiYzNlZGVkOWNiZWMyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDYg
KzM5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90
eXBlT2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqKTsKQEAgLTgyLDcgKzgzLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAgaXNGcm96ZW4gICAgICAgICAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvcklzRnJvemVuICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKICAgaXNFeHRlbnNpYmxlICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRXh0
ZW5zaWJsZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXMgICAgICAgICAg
ICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgYXNzaWduICAgICAgICAgICAgICAgICAgICBKU0J1aWx0
aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgYXNzaWduICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckFzc2lnbiAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgdmFsdWVzICAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKICAgZW50cmllcyAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQK
QEAgLTMwNSw2ICszMDYsNzMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvd25FbnVt
ZXJhYmxlUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSk7CiB9CiAK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB0YXJnZXRWYWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJPYmplY3QuYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBi
ZSBudWxsIG9yIHVuZGVmaW5lZCIpKTsKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFs
dWUudG9PYmplY3QoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIHVuc2lnbmVkIGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYXJnc0NvdW50OyArK2kpIHsKKyAgICAgICAgSlNWYWx1
ZSBzb3VyY2VWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOworICAgICAgICBpZiAo
c291cmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBKU09iamVjdCogc291cmNlID0gc291cmNlVmFsdWUudG9PYmplY3QoZXhlYyk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5k
U3ltYm9scyk7CisgICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHNvdXJjZSwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVt
UHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIGVu
dW1lcmFibGUgbG9vayB1cCBieSBjaGVja2luZyBTdHJ1Y3R1cmUncyBzdGF0dXMuCisgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDE2Cisg
ICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzb3VyY2UsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgICAgICAgICBpZiAoIXNvdXJjZS0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qoc291cmNlLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChz
bG90LmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNvdXJjZS0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisg
ICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwgdHJ1ZSk7
CisgICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRQcm9wZXJ0eVNsb3QpOworICAgICAgICB9OworCisgICAgICAgIC8vIEZpcnN0IGxvb3Ag
aXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1ib2xzIHRvIGtlZXAgc3RhbmRh
cmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgorICAgICAgICAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93bnByb3BlcnR5a2V5cworICAg
ICAgICBib29sIGZvdW5kU3ltYm9sID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIG51bVByb3Bl
cnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IG51bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVy
dHlOYW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSkgeworICAgICAgICAgICAgICAgIGZvdW5kU3ltYm9sID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXNzaWduKHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAgICAg
ICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgIXZtLnByb3BlcnR5TmFtZXMt
PmlzUHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBhc3Np
Z24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQpOworfQorCiAvLyBF
UzYgNi4yLjQuNSBUb1Byb3BlcnR5RGVzY3JpcHRvcgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWRlc2NyaXB0b3IKIGJvb2wgdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2MpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDk3Yjg2NjkyZjg1NzhmM2UzMjIyNjRkOTU3NTM5MTY5MzQ5NGQ1MWEuLjM1YWQ1NmQzMzZh
ZTM3NzY5NmI5NDRiZGNhNWZjMTE3Yzc3NzkxMDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDYtMTUg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
SW1wbGVtZW50IE9iamVjdC5hc3NpZ24gaW4gQysrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vYmplY3QtYXNzaWduLXN0cmluZy1maXJz
dC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzb3VyY2UuZ2V0IFN5
bWJvbCk6CisgICAgICAgIChzb3VyY2UuZ2V0IDEpOgorICAgICAgICAoc291cmNlLmdldCBjb2Nv
YSk6CisKIDIwMTctMDYtMTQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkFzc2VtYmx5OiByZW1vdmUgZW1wdHkgdGVzdCBmaWxlcwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1zdHJpbmctZmlyc3QuanMgYi9KU1Rlc3RzL3N0
cmVzcy9vYmplY3QtYXNzaWduLXN0cmluZy1maXJzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMyNDg5ZjIy
N2YyYjNmOWMzYTY0MTNmYmU0Nzg4YTExMjZmOTliCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1zdHJpbmctZmlyc3QuanMKQEAgLTAsMCArMSwzMiBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK3ZhciBvcmRlciA9IFtdOworCit2YXIgc291cmNlID0geworICAgIGdldCBbU3lt
Ym9sLml0ZXJhdG9yXSgpCisgICAgeworICAgICAgICBvcmRlci5wdXNoKGBTeW1ib2wuaXRlcmF0
b3JgKTsKKyAgICAgICAgcmV0dXJuIGBTeW1ib2wuaXRlcmF0b3JgOworICAgIH0sCisKKyAgICBn
ZXQgMSgpCisgICAgeworICAgICAgICBvcmRlci5wdXNoKGAxYCk7CisgICAgICAgIHJldHVybiBg
MWA7CisgICAgfSwKKworICAgIGdldCBjb2NvYSgpCisgICAgeworICAgICAgICBvcmRlci5wdXNo
KGBjb2NvYWApOworICAgICAgICByZXR1cm4gYGNvY29hYDsKKyAgICB9LAorfTsKKwordmFyIHJl
c3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIHNvdXJjZSk7CitzaG91bGRCZShyZXN1bHRbMV0sIGAx
YCk7CitzaG91bGRCZShyZXN1bHQuY29jb2EsIGBjb2NvYWApOworc2hvdWxkQmUocmVzdWx0W1N5
bWJvbC5pdGVyYXRvcl0sIGBTeW1ib2wuaXRlcmF0b3JgKTsKK3Nob3VsZEJlKG9yZGVyLmpvaW4o
JywnKSwgYDEsY29jb2EsU3ltYm9sLml0ZXJhdG9yYCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>